关于Icinga2

前面两周一直在跟icinga2进行较劲,花了2天看了下文档,并进行测试。 国内看到的文章其实都是一个单机版本的安装,没有涉及到远程客户端的。而实际测试发现这步还是比较复杂的。   首先需要是在服务器端生成客户端的唯一码

1
icinga2 pki ticket --cn ebs-aaa-beijing-test-agent 

然后client再根据server产生的这个码进行认证

1
2
3
4
5
mkdir /etc/icinga2/pki && chown -R icinga.icinga /etc/icinga2/pki 
icinga2 pki new-cert --cn ebs-aaa-beijing-test-agent --key /etc/icinga2/pki/ebs-aaa-beijing-test-agent.key --cert /etc/icinga2/pki/ebs-aaa-beijing-test-agent.crt
icinga2 pki save-cert --key /etc/icinga2/pki/ebs-aaa-beijing-test-agent.key --cert /etc/icinga2/pki/ebs-aaa-beijing-test-agent.crt --trustedcert /etc/icinga2/pki/trusted-master.crt --host ebs-aaa-beijing-monitor
icinga2 pki request --host ebs-aaa-beijing-monitor --port 5665 --ticket 13aa0b00b14ed45890984827ebfff0747a55449a --key /etc/icinga2/pki/ebs-aaa-beijing-test-agent.key --cert /etc/icinga2/pki/ebs-aaa-beijing-test-agent.crt --trustedcert /etc/icinga2/pki/trusted-master.crt --ca /etc/icinga2/pki/ca.crt
icinga2 node setup --ticket 13aa0b00b14ed45890984827ebfff0747a55449a --endpoint ebs-aaa-beijing-monitor,ebs-aaa-beijing-monitor,5665 --zone ebs-aaa-beijing-test-agent --master_host ebs-aaa-beijing-monitor --trustedcert /etc/icinga2/pki/trusted-master.crt --accept-config --accept-commands

而要用好icinga2,那就首先要理解,host, node, endpoint, zones, repository 这几个定义的区别。 但是个人感觉这些优点复杂了。 测试下来最有用的部分是对于hostgroups和servicegroups在icinga2里自定义就太方便了。这个可比nagios大大进步了,nagios里还得跟傻逼一样一个个写,虽然可以写脚本搞定,但是还是感觉很傻。

1
object HostGroup "mysql-server" { display_name = "MySQL Server" assign where match("*mysql*", host.name) && match("db-*", host.vars.prod_mysql_db) ignore where host.vars.test_server == true ignore where match("*internal", host.name) } 

还有一个功能是icinga2对于历史报警数据的追溯,由于写入了db,也不会怕丢失了。 最后一个是远程服务的执行,当然要提前加入sudo权限。

1
object EventCommand "event_by_ssh_restart_service" { import "event_by_ssh" //only restart the daemon if state > 0 (not-ok) //requires sudo permissions for the icinga user vars.event_by_ssh_command = "test $service.state_id$ -gt 0 && sudo /etc/init.d/$event_by_ssh_service$ restart" } 

其实这个也是通过by ssh来着的,这个其实nagios也可以完成。 最后一个最最重要的是icinga2可以做cluster,还可以跨机房的做cluster。但是那样的后果是在client认证的时候就更复杂了。其实为什么不做成zabbix proxy这样的东西。这也就怪不得这个东西大家用的少了。看了那么多运维的简历没有说有用这个的。