check.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:integrations-extras 作者: DataDog 项目源码 文件源码
def check(self, instance):
        host, port, user, password, connect_timeout, server_name = self._get_config(instance)
        tags = instance.get('tags', [])
        tags = tags + ['server_name:%s' % server_name]
        service_check_tags = tags + ['url:%s' % host]

        version = self._get_version(instance, service_check_tags)
        usrPass = user + ":" + password
        b64Val = base64.b64encode(usrPass)

        if version > 2:
            checkURL = host + ":" + str(port) + "/db/data/transaction/commit"
        else:
            checkURL = host + ":" + str(port) + "/v1/service/metrics"

        # Neo specific
        # Create payload using built-in Neo4j queryJmx stored procedure
        try:
            payload = {"statements" : [{"statement" : "CALL dbms.queryJmx('org.neo4j:*') yield attributes with  keys(attributes) as k, attributes unwind k as row return row, attributes[row]['value'];"}]}
            headers_sent = {'Content-Type':'application/json','Authorization':'Basic ' + b64Val + '','Content-Type':'application/json'}
            r = requests.post(checkURL, data=json.dumps(payload),headers=headers_sent)

        except (socket.timeout, socket.error, HttpLib2Error) as e:
            msg = "Unable to fetch Neo4j stats: %s" % str(e)
            self._critical_service_check(service_check_tags, msg)
            raise


        if r.status_code != 200:
            msg = "nexpected status of {0} when fetching Neo4j stats, response: {1}"
            msg = msg.format(r.status_code, r.text)
            self._critical_service_check(service_check_tags, msg)
            r.raise_for_status()

        stats = r.json()
        self.service_check(
            self.SERVICE_CHECK_NAME, AgentCheck.OK, tags=service_check_tags)

        for doc in stats['results'][0]['data']:
            if doc['row'][0].lower() in self.keys:
                self.gauge(self.display.get(doc['row'][0].lower(),""), doc['row'][1], tags=tags)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号