Skip to content

heavenshell/py-mackerel-client

Repository files navigation

mackerel.client

image

mackerel.client is a python library to access Mackerel (https://mackerel.io/).

This client is Ported from mackerel-client-ruby.

Install

$ pip install mackerel.client

Dependency

mackerel.client use requests, simplejson and click.

Usage

Get hosts

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key')
host = client.get_hosts()

Get host

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key')
host = client.get_host('<hostId>')

Update host status

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key')
# Poweroff.
self.client.update_host_status('<hostId>', 'poweroff')
# Standby.
self.client.update_host_status('<hostId>', 'standby')
# Working.
self.client.update_host_status('<hostId>', 'working')
# Maintenance.
self.client.update_host_status('<hostId>', 'maintenance')

Retire host

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key')
self.client.retire_host('<hostId>')

Get latest metrics

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key')
# Get hostId A's and hostId B's loadavg5, memory.free value.
metrics = self.client.get_latest_metrics(['<hostId A>', '<hostId B>'],
                                         ['loadavg5', 'memory.free'])

Post metrics

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key>')
metrics = [
    {
        'hostId': '<hostId>', 'name': 'custom.metrics.loadavg',
        'time': 1401537844, 'value': 1.4
    },
    {
        'hostId': '<hostId>', 'name': 'custom.metrics.uptime',
        'time': 1401537844, 'value': 500
    }

]
# Post `custom.metrics.loadavg` and `custom.metrics.uptime` to `hostId`.
client.post_metrics(metrics)

Post service metrics

from mackerel.client import Client

client = Client(mackerel_api_key='<Put your API key>')
metrics = [
    {
        'name': 'custom.metrics.latency',
        'time': 1401537844, 'value': 0.5
    },
    {
        'name': 'custom.metrics.uptime',
        'time': 1401537844, 'value': 500
    }
]
# Post 'custom.metrics.latency' and 'custom.metrics.uptime' to `service_name`.
self.client.post_service_metrics('service_name', metrics)

CLI

Get host(s) information from hostname or service, role.

$ mkr.py info [--name foo] [--service service] [--role role]

Set status of a host.

$ mkr.py status --host-id foo --status working

Retire a host.

$ mkr.py retire --host-id foo

Get status of a host.

$ mkr.py status --host-id foo

Authentication

$ export MACKEREL_APIKEY=foobar