我要讲一个关于开发mackerel-plugin-odfe(Open Distro for Elasticsearch)的故事
首先
最近,亚马逊发布了Open Distro for Elasticsearch(以下简称ODFE),已经过了一段时间了。我想肯定有人在使用吧。如果使用的话,就需要进行监控了。
鯖には官方插件mackerel-plugin-elasticsearch存在,但這是針對標準的Elasticsearch的插件。在撰寫本文的時候(2019/04/08),ODFE有自己獨有的行為,需要相應的插件。
这是一篇关于制造它的文章。
mackerel-plugin-odfe插件的介绍
存储库
mackerel-plugin-odfe 插件在这里。
- https://github.com/etsxxx/mackerel-plugin-odfe/
如 下 面 所 述 , mackerel-plugin-odfe 是 基 於 官方插件 mackerel-plugin-elasticsearch 进 行 fork 并 加入 了 以 下 修改 的 插件 , 详 情 请 参 阅 存储 库 中 的 README 。
为什么不正式地提交Pull请求呢?
尽管实现方式和行为与Elasticsearch非常相似,但如果不将其视为两者的区别,可能会引发多个问题。为了处理这种分歧,必须编写代码并设置测试环境,这也很麻烦。
根据以上所述,因为偷懒的结果,已经上传到另一个仓库中。
我們不符合開放源碼軟體的精神對吧…
為了讓更新內容更容易理解,我將其記錄在這篇文章中。
安装
如果您在已安装 mkr 的环境中进行安装,则以下操作即可。
sudo mkr plugin install etsxxx/mackerel-plugin-odfe
让我们在mackerel-agent的配置文件中按以下方式进行追加(注意路径和选项)。
[plugin.metrics.elasticsearch]
command = "/path/to/mackerel-plugin-odfe -scheme=https"
env = { ES_USER = "USERNAME", ES_PASSWORD = "PASSWORD" }
请详细查阅README或帮助文件以了解使用方法。
关于权限
尽管我们已经进行了用户验证,但如果使用Admin用户,从权限分离的角度来看就不太好。让我们在安全插件中创建以下类型的用户/角色。
在Role菜单中,创建一个名为”monitor”的新角色。权限如下所示。
-
- Cluster Permissions:
Permissions: Action Groups : CLUSTER_MONITOR
-
- Index Permissions:
Index and Document type: *.*
Permissions: Action Groups: INDICES_MONITOR
※ 未来可能会有一些必要权限的变化,但在本文撰写时我们确认上述权限是可以的。
然后,在用户菜单中创建”monitor”用户,并在角色映射菜单中将先前创建的”monitor”角色进行映射。
如果将mackerel-agent.conf中的ES_USER和ES_PASSWORD替换为该用户的信息,就可以了。
实施上的变更点
在v0.0.1的版本中,官方的Elasticsearch插件和以下部分的实现有所不同。
-
- Basic認証用のオプション/環境変数を追加:
ODFEはSecurityプラグインによる Basic認証が有効化されている ため。
環境変数で渡す方法を推奨しますが、引数でも渡せます。
-scheme=https 時の証明書チェックを 有効化 するオプション -secure を追加:
つまり、デフォルトでは証明書をチェックしません。
mackerel-agentはODFEと同一ホストで動作させることが多いと思います。その場合、アクセス先ElasticsearchのURLは https://localhost:9200/ となることが想像されます。これでは多くの場合、証明書をチェックする意味がないためです。
外部公開用のURL経由でアクセスする場合 or 別ホストのElasticsearchをチェックする場合は、 -secure オプションを付けましょう。
取得するメトリックが異なる:
例えば、ODFE特有のスレッド情報 threads_opendistro_monitor_runner などを追加しています。
取得対象の情報が存在しないときのログを ERROR ではなく INFO へ:
大した差ではないですが、少しだけ静かにしています。
虽然有些差异,但可以说只是细微的改动,并且可以兼容使用。(实际上,选项和说明书的示例描述也是兼容的)
最后
上述是对Open Distro for Elasticsearch的Mackerel插件mackerel-plugin-odfe的介绍。
我认为它可以作为Mackerel官方Elasticsearch插件与ODFE兼容之间的“过渡”的功能。