跳转到主要内容

一个帮助您迁移Graphite度量指标的简单工具

项目描述

build status coverage status

一个帮助您迁移Graphite度量指标的简单工具

什么是metrics-migration ?

metrics-migration是一个Python3工具(async io),旨在帮助Graphite用户以多种方式迁移度量指标。

  • 迁移整个存储目录。

  • 迁移特定的whisper文件(带有新度量名称)。

  • 在迁移期间允许架构更改(提供架构规则)。

安装

您可以使用任何Python包管理器全局安装aiographite。

pip3 install metrics-migration

依赖

Whisper在PyPI上仅支持Python2,我们应该从GitHub下载whisper egg。

pip3 install https://github.com/graphite-project/whisper/tarball/feature/py3

示例

让我们通过几个示例开始。

示例1. 迁移目录的简单示例。

from migration.migration import Migration
import asyncio


loop = asyncio.get_event_loop()
host = "127.0.0.1"
port = 2003
directory = '/Users/yunx/Documents/PROJECTS/metrics-migration/examples'


async def go():
    migration_worker = Migration(directory, host, port, loop=loop)
    await migration_worker.connect_to_graphite()
    await migration_worker.run()
    await migration_worker.close_conn_to_graphite()


def main():
    loop.run_until_complete(go())
    loop.close()


if __name__ == '__main__':
    main()

示例2. 使用新度量迁移whisper文件。

from migration.migration import Migration
import asyncio


loop = asyncio.get_event_loop()
host = "127.0.0.1"
port = 2003
directory = '/Users/yunx/Documents/PROJECTS/metrics-migration/examples'
storage_dir = '/Users/yunx/Documents/PROJECTS/metrics-migration'
metric = "examples.committedPoints"
new_metric = 'hello.world'


async def go():
    migration_worker = Migration(directory, host, port, loop=loop, debug=True)
    await migration_worker.connect_to_graphite()
    await migration_worker.send_one_wsp(storage_dir, metric, new_metric)
    await migration_worker.close_conn_to_graphite()


def main():
    loop.run_until_complete(go())
    loop.close()


if __name__ == '__main__':
    main()

示例3. 有多个目录要迁移?

from migration.migration import Migration
import asyncio


loop = asyncio.get_event_loop()
host = "127.0.0.1"
port = 2003
directories_and_prefixes = [
    ('/opt/graphite/metrics-migration/zon1', 'zon1'),
    ('/opt/graphite/metrics-migration/zon2', 'zon2'),
]


async def go():
    migration_worker = Migration(directory, host, port, loop=loop)
    await migration_worker.connect_to_graphite()
    for (directory, prefix) in directories_and_prefixes:
        wait migration_worker.run(directory=directory, prefix=prefix)
    await migration_worker.run()
    await migration_worker.close_conn_to_graphite()


def main():
    loop.run_until_complete(go())
    loop.close()


if __name__ == '__main__':
    main()

示例4. 使用上下文管理器的异步操作

from migration.migration import Migration
import asyncio


loop = asyncio.get_event_loop()
host = "127.0.0.1"
port = 2003
directory = '/Users/yunx/Documents/PROJECTS/metrics-migration/examples'


async def go():
    """
    Use context manager
    """
    async with Migration(directory, host, port, loop=loop, debug=True) as migration_worker:
        await migration_worker.run()


def main():
    loop.run_until_complete(go())
    loop.close()


if __name__ == '__main__':
    main()

开发

运行单元测试。

./uranium test

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

metrics-migration-0.1.2.tar.gz (5.2 kB 查看哈希值)

上传时间:

构建分布

metrics_migration-0.1.2-py2.py3-none-any.whl (8.3 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持