ubuntu 12.04 的左侧任务栏怎么把图标放到任务栏下移,放到下面

当前位置: >
Ubuntu 12.04 部署 gitlab
时间: 23:53 来源:未知 作者: 阅读:次
Ubuntu 12.04 部署 gitlab
&(2&votes, average:&5.00&out of 5)
2013 年 10 月 12 日
运维gitlab、igitlabjsxubar
gitlab&是类似于 github 的 git web 管理工具。具体怎么样可以试验一下&Demo。
本文将介绍在 Ubuntu 12.04 中安装 gitlab 的整个过程以及一些高级设置。
本文分为三个部分:
安装前准备工作
安装 gitlab
高级设置,如添加ssl、修改端口、使用URL相对路径
一、安装前准备工作
因为 gitlab 要求 git 版本大于等于 1.7.10,而官方源中的恰好为 1.7.9,
因此添加 ppa 源来安装最新版的git。
# 安装 mysql-server
apt-get install -y mysql-server
# 设置 root 密码, 假设为: 123456
mysqladmin password
# 添加git的ppa
apt-get -y install python-software-properties
apt-add-repository ppa:git-core/ppa
apt-get update
二、安装 gitlab
我们借助 igitlab 项目的脚本来安装 gitlab,因为按照 gitlab 官方安装教程安装似乎总有一点问题。
wget /tripflex/igitlab/master/igitlab
chmod +x igitlab
# 修改 igitlab
vim igitlab
# mysqlpasswd=&123456&
# 执行 igitlab, 假设我们的域名为
安装完成后,打开
即可登录。使用以下用户信息:
email: admin@local.host
pass: 5iveL!fe
username: root
三、高级设置
1. web界面添加ssl
假设我们准备好了服务器的密钥 server.key 和证书 server.crt 和根证书 ca.crt (如何获得证书
参考 ssl证书生成 ), 且将这些文件放在/etc/nginx/sites-available/下面。
# 将以下内容添加到 /etc/nginx/sites-available/gitlab 最后。
# 替换 server_name 指定的域名
&&listen *:443;&
&&ssl&&&&&&&&&&&&&&&&&&
&&ssl_certificate&&&&& /etc/nginx/sites-available/server.&
&&ssl_certificate_key& /etc/nginx/sites-available/server.&
&&server_;&
&&#ubuntu1204-&&&& # e.g., server_&
&&root /home/gitlab/gitlab/&
&&# individual nginx logs for this gitlab vhost&
&&access_log& /var/log/nginx/gitlab_ssl_access.&
&&error_log&& /var/log/nginx/gitlab_ssl_error.&
&&location / {&
&&&&# serve static files from.&
&&&&# @gitlab is a named location for the upstream fallback, see below&
&&&&try_files $uri $uri/index.html $uri.html @&
&&# if a file, which is not found in the root folder is requested,&
&&# then the proxy pass the request to the upsteam (gitlab unicorn)&
&&location @gitlab {&
&&&&proxy_read_timeout 300; # /gitlabhq/gitlabhq/issues/694&
&&&&proxy_connect_timeout 300; # /gitlabhq/gitlabhq/issues/694&
&&&&proxy_redirect&&&&&
&&&&proxy_set_header&& X-Forwarded-Proto $&
&&&&proxy_set_header&& Host&&&&&&&&&&&&& $http_&
&&&&proxy_set_header&& X-Real-IP&&&&&&&& $remote_&
&&&&proxy_pass http://&
# 重启 nginx 服务
service nginx restart
登录即可。
2. git 源使用 ssl
vim /home/git/gitlab/config/gitlab.yml
# 修改 /home/git/gitlab/config/gitlab.yml
&&https: true
# 重启 gitlab 服务
service gitlab restart
# 设置 git
git config --global http.sslVerify False
这样就可以正常使用 https 方式的 git repo 。
3. 修改端口
修改以下三个文件:
vim /etc/nginx/sites-enabled/gitlab
# listen *:888 default_
vim /home/git/gitlab/config/gitlab.yml
# port: 888
vim /home/git/gitlab-shell/config.yml
# gitlab_url: &:888&
service gitlab restart
service nginx restart
4. 使用相对路径
先修改以下文件:
vim /home/git/gitlab/config/application.rb
# config.relative_url_root = &/gitlab&
vim /home/git/gitlab/config/gitlab.yml
# relative_url_root: /gitlab
vim /home/git/gitlab/config/unicorn.rb
# 添加一行 ENV['RAILS_RELATIVE_URL_ROOT'] = &/gitlab&
vim /home/git/gitlab-shell/config.yml
# gitlab_url: &/gitlab&
vim /etc/nginx/sites-enabled/gitlab
#& location /gitlab {
重启相关服务:
service gitlab stop
cd /home/git/gitlab
sudo -u git -H bundle exec rake assets:clean RAILS_ENV=production
service gitlab start
service nginx restart
5. 使用 postgresql 数据库
# Install the database packages
sudo apt-get install -y postgresql-9.1 libpq-dev
# Login to PostgreSQL
sudo -u postgres psql -d template1
# Create a user for GitLab. (change $password to a real password)
template1=# CREATE USER
# Create the GitLab production database & grant all privileges on database
template1=# CREATE DATABASE gitlabhq_production OWNER
# Quit the database session
template1=# \q
# Try connecting to the new database with the new user
sudo -u git -H psql -d gitlabhq_production
# PostgreSQL
sudo -u git cp config/database.yml.postgresql config/database.yml
# Make config/database.yml readable to git only
sudo -u git -H chmod o-rwx config/database.yml
# Or for PostgreSQL (note, the option says &without ... mysql&)
sudo -u git -H bundle install --deployment --without development test mysql aws
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
# Type 'yes' to create the database.
# When done you see 'Administrator account created:'
四、参考信息
igitlab 项目
gitlab 官网
Win + R 运行方式打造快速启动系统
&(3&votes, average:&4.33&out of 5)
2013 年 9 月 28 日
技术杂集、杂集Win + R、发送到、快速启动、运行jsxubar
在 Windows 下使用 Win + R 打开运行窗口,然后输入命令,大概可以实现类
Linux的命令方式。本文教您如何在Windows下使用运行打造快速启动系统。
使用运行窗口输入命令时,Windows会在PATH变量指定的路径下查找命令,
如果找到就运行命令
。利用这个方式,我们可以将所有常用的或要用到的程序的快捷方式集中放到一个目录下面,
然后再将这个路径添加到PATH变量中。
1. 将存放程序快捷方式的目录添加到PATH变量
假设我们将程序的快捷方式集中放在E:\PROGRAMS 这个目录下,添加E:\PROGRAMS
到PATH环境变量的方法如下,按照图中标明的步骤操作即可:
2. 制作程序快捷方式
我们需要做两步:
创建程序的快捷方式
将创建好的快捷方式剪切到程序快捷方式集中保存目录
其中提供一点技巧:
创建快捷方式时如果不想添加&快捷方式&字样,可以打开注册表(运行 & regedit
可以打开注册表) 中键 HKEY_CURRENT_USER/Software/Microsoft/Windows/Cu
rrentVersion/Explorer/,将键link的值改为00 00 00 00,如下图所示:
通过&发送到&功能将创建快捷方式和剪切快捷方式到目录这两个功能合二为一,&发送到&功能的
实现方式是创建一个脚本,脚本内容(相应的修改E:\PROGRAM\为你的目录)如下:
''=================================================
''
'' NAME: &CreateMyShortCut.vbs&
''
'' AUTHOR: Ivan Chen , Zsu
'' DATE& :
''
'' COMMENT: &comment&
''
''==================================================
'' Links save path
Const strDestination = &E:\PROGRAM\&
Set objArgs = WScript.Arguments
Set WshShell = WScript.CreateObject(&WScript.Shell&)
For i = 0 to objArgs.Count - 1&& '' Loop through all arguments.
&&strShortCut = strDestination & &\& & GetAName(objArgs(i)) & &.lnk&
&&set oShellLink = WshShell.CreateShortcut(strShortCut)
&&oShellLink.TargetPath = objArgs(i)
&&oShellLink.WindowStyle = 1
&&''oShellLink.Description = &Created By Ivan Chen&
&&oShellLink.WorkingDirectory = Left(objArgs(i), InStrRev(objArgs(i), &\&))
&&oShellLink.Save
Function GetAName(DriveSpec)
&&&Dim fso
&&&Set fso = CreateObject(&Scripting.FileSystemObject&)
&&&GetAName = fso.GetFileName(DriveSpec)
End Function
''end
然后将脚本的快捷方式放到发送到目录,如下图所示:
这样就可以了,下次要将程序的快捷方式放到我们的那个目录中时,
只需使用右键中的发送到功能即可。
同一程序多个命令,比如要打开Word 2003,可以创建word.exe程序的多份快捷方式(
文件名不同而已,复制 & 粘贴 & 重命名即可)word.lnk、office.lnk、doc.lnk ,
这样在运行窗口输入word或office或doc都可以打开Word 2003。
OK,所有内容就是这样,欢迎拍砖,提出更好的建议。
12306 网站证书问题解决方法
&(4&votes, average:&5.00&out of 5)
2013 年 9 月 23 日
技术杂集、杂集12306、sec_error_unknown_issuer、证书问题jsxubar
话说 12306 火车票订票网站这么一个重要的电子商务站,为什么就不能好好整一个证书呢。
一直以来12306网站的证书都有这样那样的问题。此文提供一些解决思路。
12306 网站证书问题
1. 证书问题表现
我使用Firefox浏览器较多,在浏览12306网站时,经常会遇到下面的提示:
此连接不受信任
您想使用 Firefox 来安全连接至 ,但是我们无法确认此连接的安全性。
通常,当您尝试安全连接时,站点会出示受信任的凭据,以证明您访问的是正确的位置。
然而现在,此网站的身份无法核实。
如果您过去曾连接到此网站且没有遇到该问题,那么此错误表示可能有人试图冒充该网站,
因此您应该停止浏览。
使用了无效的安全证书。 该证书因为未提供证书颁发链而不被信任。
(错误码: sec_error_unknown_issuer)
看起来是这样的:
Firefox的小警察都不耐烦了,你12306就不能让我省点心吗。
2. 问题解决参考
我不能保证下面提供的方法能解决你的问题,仅供参考。
你可以按照下面的步骤来:
将浏览器中与12306有关的证书全部删除掉(如果原来有的话)
在浏览器的证书机构中安装根证书(根证书在这里:/mormhweb/,下载解压后就能看到)
访问 /,添加安全例外,看看能不能添加上去
如果3不行,则访问&/otsweb/& 添加安全例外。
如果都不行,那就用IE吧。
查看所有2评论
深圳linux社区第一次线下交流总结
&(4&votes, average:&5.00&out of 5)
2013 年 9 月 13 日
深圳运维社区线下交流深圳运维社区、线下交流jsxubar
时间:日19:00&-22:00
报名8人:龙的帝国、新奇士、puluto、clavin、小豆哥、简单爱、adong(本人)、
不潜水(临时报名)。
实际到场5人:puluto、clavin、小豆哥、新奇士、adong。
原定主题:第一次以互相认识为主、自由话题。
聚会情况说明
puluto是深圳一知名体育竞技类页游公司运维主管。给我的印象是自学能力突出、
技术过硬、linux方面思路清晰,帅哥一枚。
clavin是中国最知名的IT公司(其实大家应该想得到,就不直接说了)做企业内部应用支撑的
(个人理解),在saltstack群里他的发言,我以为是个工作时间应该比较久的牛人,
见到本人之后,发现现在的年轻人不得了。刚毕业一年水平如此,对问题的见底很到位。佩服~
小豆哥是深圳另外一家以手游为主的公司的运维哥(一款斗地主很知名)。
听他跟puluto探讨现在的手游和页游的市场和技术架构,本人了解有限,所有关于技术不多说了,应该是属于低调的华丽类型。
新奇士,我认识已经很久了。印象我就不多说了。以后大家慢慢发现,
他主要分享了个人职业的定位和发展,处于迷茫期的我受益匪浅。
关于adong(本人),哈哈,我自己就不介绍我自己了,以后大家慢慢认识。
技术交流总结
大家一致认为,深圳的以linux平台为主的技术人员还没有聚起来。所以以后本社区会经常组织活动,
让大家多分享,多认识一些朋友,无论是对工作还是对个人的职业发展都是很有帮助。
技术人员也要学着走出去,拓宽技术路线的思路,才能走的更远。更是因开源而收益,进而去贡献开源。
深圳运维社区第一次线下交流会
&(3&votes, average:&5.00&out of 5)
2013 年 9 月 12 日
深圳运维社区线下交流jsxubar
主题:第一次以互相熟悉为主,个人介绍,专注方面。
地点:深圳 南山区 科技园老树咖啡 深圳地铁一号线&-罗宝线:深圳大学站 A4出口 详见下图。
时间:日19:30&-21:00,请大家按时到场。
联系人:位向东(ID:adong)电话: QQ群:深圳linux运维交流群
费用:AA,由于第一次交流,大家先认识一下,不聚餐,请大家吃完饭之后汇合。
Salt Syndic
&(4&votes, average:&5.00&out of 5)
2013 年 9 月 12 日
saltstack、运维salt syndic、saltstackjsxubar
The Salt Syndic interface is a special passthrough minion, it is run on a mast
er (maybe we can give this master a name SecondMaster) and connects to
another master ( maybe we can give this master a name TopMaster. Through
the Salt Syndic interface, TopMaster can control the minions that connect to SecondMaster.
When TopMaster have to control all the minions, if without Syndic, the TopMaster have to
communicate with all minions, establish an connection with every minion, this will take
a lot of host resource and network traffic, and if the TopMaster is not located in the same
local network with minions, it will spend much time on network communication.
With Syndic, the TopMaster only need to establish a connection with SecondMaster and
send the commands to SecondMaster. The SecondMaster is located in the same local
network with minions, so the time spend on network communication can be very little.
Architecture Diagram
The architecture diagram with Syndic is as follows:
The architecture diagram without Syndic is as follows:
Configuring the Syndic
The master that the syndic connects to sees the syndic as an ordinary minion,
and treats it as such. the higher level master will need to accept the syndic&s minion
key like any other minion. This master will also need to set the order_masters
value in the configuration to True. The order_masters option in the config on the
higher level master is very important, to control a syndic extra information needs to
be sent with the publications, the order_masters option makes sure that the extra data is sent out.
Note: The master sees the syndic as an ordinary minion. Thus the syndic
don&t need to listen any port, it will connect to master&s 4505 or 4506. I&ll verify this later.
Follow these steps below:
Change order_masters to True in configuration file /etc/salt/master On TopMaster
order_masters: True
Install salt-syndic and setup syndic_master on SecondMaster
apt-get install salt-syndic
# edit configuration file /etc/salt/master
syndic_master: MasterOfMaster ip/address
Start the salt-syndic on SecondMaster
service salt-syndic start
Accept the key from SecondMaster& Syndic service
salt-key -A -y
OK, all is done here. Let&s do some experiments and verify our guess.
Use Syndic
Here I make these assumptions:
I have three hosts, their roles is as follows:
TopMaster( hostname: master) : 192.168.254.203
SecondMaster( hostname and minion id: slave1 )or syndic: 192.168.254.204
Minion of SecondMaster( hostname and minion id: slave2): 192.168.254.208
1. Syndic is a minion or not?
Let&s check the syndic daemon status:
Here we can see that the syndic daemon connect to TopMaster&s 4505 port as ordinary minion do.
2. Will the minion of syndic connect to the TopMaster straightly?
Let&s check the process when run some cmd using salt
Here, slave2 did not have any connection with master ( our TopMaster)
3. How the state will apply to minions?
First create an tmp.sls on TopMaster, the content is as follows:
/tmp/syndictest:
&&&&file.managed:
&&&&&&&&- contents: |
&&&&&&&&&&&&this is from topmaster 192.168.254.203
Then create an tmp.sls on SecondMaster, the content is as follows:
/tmp/syndictest:
&&&&file.managed:
&&&&&&&&- contents: |
&&&&&&&&&&&&this is from syndic 192.168.254.204
Last apply this tmp state
salt '*' state.sls tmp
salt '*' cmd.run 'cat /tmp/syndictest'
So the result is obvious, slave2 connect to its master slave1, then it will apply the
state defined in slave1, and slave1 host and master host&s master are master,
so they will aplly the state defined in master host.
Conclusion: when salt do any operations, minion will only apply operations
defined in this minion&s master. These operations are not related with syndics.
4. What job does syndics do?
I don&t know. there&s no documents about it in salt official websites(&salt syndic&),
maybe you can capture the packages of syndic daemon with tcpdump, then analysis these packages.
5. How to manage the syndics?
We can put all syndics into a nodegroup, create a nodegroup definition file on TopMaster:
cat &&/etc/salt/master.d/nodegroup.conf &&'EOF'
nodegroups:
&&&&syndics: 'slave1'
service salt-master restart
salt -N syndics state.highstate
salt syndic: official document
saltstack(四) syndic&: This article is written in Chinese. I think it&s not a good
way to operate the minion on& topmaster straightly, after all there&s a syndic across
topmaster and minion, maybe we should see all minions which connect to syndics as a blackbox.
Note: this is my first english article, so maybe there are some grammatical errors, if you&
find any errors in this post, just point these errors out, I will correct them immediately and& thank you.
CentOS 5 zeromq2升级zeromq3
&(5&votes, average:&5.00&out of 5)
2013 年 9 月 7 日
saltstackCentOS 5、saltstack、zeromq2、zeromq3jsxubar
在CentOS 5下面安装 salt (使用epel源)时,默认安装的zeromq版本是zeromq2,
zeromq2证明是存在bug的,因此本文就将zeromq2升级到zeromq3。
你可以在这里(Salt Minion keepalive is not valid in CentOS 5和Minion did not return
message on CentOS5-6 or RHEL 5-6)可以找到minion在使用zeromq2与master通信时,
minion与master的连接断开后,不会自动重连的问题。
CentOS 5的zeromq版本是zeromq-2.1.9-1.el5。
解决方法就是升级zeromq2到zeromq3。
方法一: 适用于单机运行以下命令即可:
wget -O /etc/yum.repos.d/ownsource.repo
:8080/testing/ownsource/ownsource.repo
yum clean all
yum update zeromq libzmq3 python26-zmq
service salt-minion restart
这样就可以了。
方法二: 使用state
我们也可以用一个state来作这个事情:
# filename: /srv/salt/updatezeromq.sls
getownsourcerepo:
&&&&cmd.run:
&&&&&&&&- name: wget -O /etc/yum.repos.d/ownsource.repo
:8080/testing/ownsource/ownsource.repo
&&&&&&&&- unless: test -f /etc/yum.repos.d/ownsource.repo
&&&&pkg.installed:
&&&&&&&&- pkgs:
&&&&&&&&&&&&- zeromq
&&&&&&&&&&&&- libzmq3
&&&&&&&&&&&&- python26-zmq
&&&&&&&&- require:
&&&&&&&&&&&&- cmd: getownsourcerepo
salt-minion:
&&&&service.running:
&&&&&&&&- enable: True
&&&&&&&&- watch:
&&&&&&&&&&&&- pkg: zeromqs
Ok, 应用一下这个sls ( salt &*& state.sls updatezeromq ) 就行了。
最后需要检查确认一下,使用下面的命令:
# 如果显示
salt -G 'osrelease:5.*' test.versions_report
确保显示的zeromq的版本信息为:
PyZMQ: 13.1.0
ZMQ: 3.2.2
欢迎有爱心人士提供空间来存放打包的一些软件,现在是放在公司的服务器上,
一旦离开公司就没戏了。
其中的zeromq和libzmq3包是从zeromq官方源转载的。
python26-zmq是自己打包的,rpm的源码包在这里:python26-zmq-13.1.0-1.src.rpm&下载。
查看所有7评论
Zabbix 发现功能中文文档
&(5&votes, average:&5.00&out of 5)
2013 年 9 月 4 日
ZabbixAuto Registration、Discovery、Low level discovery、Network Discovery、Zabbixjsxubar
说明:本文译自 zabbix 官方文档&Discovery&一节,包括 Network Discovery, Auto
Registration和Low level discovery,同时对文章进行了补充以及更详细的说明。
适用于Zabbix 2.0 版本。
发现包括三种类型:
网络发现 ( Network discovery)
主动客户端自动注册 ( Active agent auto-registration )
低级别发现 ( low-level discovery )
下面将依序详细讲解这三种类型的自动发现。到最后做一个简单的比较和总结。
一、 网络发现
zabbix 提供非常有力和灵活的自动网络发现功能。
通过网络发现,你可以:
加速zabbix部署
在不断变化的环境中使用zabbix而不需要过多的管理
zabbix网络发现基于以下信息:
可用的外部服务(FTP,SSH,WEB,POP3,IMAP,TCP等等)
从zabbix客户端接收到的信息
从SNMP客户端接收到的信息
它不提供:
网络拓扑的发现
网络发现由两个步骤组成:发现和动作(action)
zabbix周期性地扫描在网络发现规则中定义的IP段。能够针对每一个规
则配置自身的检查频率。每一个规则都定义了一个对指定IP段的服务检查集合。
注意:发现检查独立于其它的检查。如果某个检查没有找到服务(或检查失败),
那么其它的检查也会进行。
在网络发现模块上进行的每个对服务和主机(IP)的检查会产生一个发现事件:
引发事件的内容
每个zabbix检测到一个活动的服务
每个zabbix检测不到服务
在主机上至少启动了一项服务
所有服务都没有响应
服务恢复或第一次发现服务
服务在启动后丢失掉了
主机恢复或第一个发现主机
主机在启动后丢失掉了
发现事件是相关动作的基础,如:
添加或删除主机
启用或停用主机
添加主机到某个组中
从某个组中删除主机
将主机链接到某个模块或删除主机与模块的链接
执行远程脚本
这些动作都可以针对设备类型,IP,状态,运行时间,停机时间等进行相应的配置。
对网络发现的基于事件的动作配置的完整细节,可以查看关于操作和关于条件的文档页面。
添加主机时的接口创建
当主机通过网络发现功能被添加时,他们会基于以下规则自动创建接口:
服务检测 & 例如如果一个SNMP检测成功了,那么一个SNMP接口将会被创建。
如果一个节点同时响应zabbix客户端和SNMP请求,那么两种类型的接口都会被创建
如果zabbix客户端和SNMP返回的数据有独特的标准,那么第一个被发现的接口
将会创建为默认的接口,其它的IP地址会被添加为附加接口。
如果一个主机只响应了客户端的检查,那么它就只会创建一个客户端接口。如果
这个主机在后来开始回应SNMP,那么附加的SNMP接口也会添加上去。
如果3个单独的主机被一开始就创建了,通过独特的IP这一个标准来发现的,那么
发现规则就会被修改,从而使得主机A,B和C有相同的独特标准结果,B和C被创建
为第一个主机A的附加接口。各自的主机B和C会保留。在监控-发现中,被添加的接
口会以黑体和缩进显示在&发现的设置&栏中,但是在&被监控的主机&栏中只会显示A,
第一个被创建的主机。不会对作为附加接口的IP统计&运行时间/停机时间&。
4. 配置网络发现规则
配置一个zabbix的网络发现规则来发现主机和服务:
跳到 配置 & 发现
点击&创建规则&或选择编辑已经存在的规则
编辑发现规则的属性
2) 规则属性
规则名称,比如&Local network&
Discovery by proxy
谁执行发现:
no proxy&& Zabbix 服务器执行发现功能
&proxy name&&& 指定的代理执行发现功能
指定网段,可以使用以下格式指定:
单个IP: 192.168.1.33
IP地址段: 192.168.1.1-255
IP掩码: 192.168.4.0/24
支持的IP掩码:
IPv4 地址支持 /16 & /32
IPv6地址支持 /112 & /128
列表: 192.168.1.1-255,192.168.2.1-100,192.168.2.200,192.168.4.0/24
注意:每个IP地址应该只被包含一次。在多条规则中包含同一个IP地址可
能会导致不可预知的行为,如死锁或在数据库中重复添加主机。
当拥有相同的DNS名称的两个主机被不同的发现规则包含时也会发生同样的问题。
Delay (seconds)
Zabbix多少执行一次规行
Zabbix 会使用需要检查的列表来发现主机和服务。
支持的检查包括: SSH, LDAP, SMTP, FTP, HTTP, POP, NNTP, IMAP, TCP, Zabbix
agent, SNMPv1 agent, SNMPv2 agent, SNMPv3 agent, ICMP ping.
基于协议的发现使用net.tcp.service[]&函数来测试每个主机,除了SNMP是使用
SNMP OID来查询的。Zabbix 客户端通过查询一项数据来测试。
请查看agent items获取更多信息。
Ports 参数支持以下形式:
单个端口: 22
端口范围: 22-45
端口列表: 22-45,55,60-70
Device uniqueness criteria
独特性标准:
IP address&& 不处理多个单IP设置。如果已经存在某个IP地址的设备,
这时又发现一个,那么后面发现的这个将不会添加。
Type of discovery check&& 要么SNMP检查要么Zabbix agent 检查
Active&& 启用规则
Disabled&& 禁用规则
3)一个真实的场景
在这个例子中我们会建立一个对IP地址段为192.168.1.1-192.168.1.255的本地网站建立网络发现。
在我们的场景中我们要实现以下功能:
发现Zabbix agent在运行的主机
每10分钟运行一次检查
当主机的在线时间超过1小时后添加主机到监控中
当主机的离线时间超过24小时后删除主机
添加Linux主机到&Linux server&组中
添加Windows主机到&Windows server&组中
对Linux主机使用Template_Linux模板
对Windows主机使用Template_Windows模板
对我们的IP段定义一个发现规则,如下图所示:
Zabbix会通过连接Zabbix客户端然后获取system.uname的值来试着发现指定IP段
192.168.1.1-192.168.1.255上的主机。从客户端接收到的值可以用来对不同的操作系统应用不同的操作。
比如链接Windows服务器到Template_Windows,链接Linux servers到Template_Linux。
这条规则每10分钟(600秒)执行一次。通过这条规则,
Zabbix会自动开始发现和创建基于发现的事件为更多的处理。
为添加被发现的Linux服务器到相应的组和模板定义一个action&。
如果满足以下条件,动作会被激活:
&Zabbix agent& 服务处于&up&状态
system.uname的值包含 (在规则定义中使用的Zabbix 客户端键) &Linux&
在线时间超过1小时(3600秒)
动作将会执行以下操作:
添加发现的主机到&Linux servers&组(如果之前没有添加主机的话会也同时也添加主机)
链接主机到&Template_Linux&。Zabbix会使用Template_Linux
里面的数据项和触发器自动开始监控主机。
定义一个动作来添加发现的Windows服务器到相应的组的模板。
定义删除丢失的服务器的动作。
如果&Zabbix agent&服务停止超过24小时,那么服务器将被删除。
二、主动客户端自动注册
Zabbix 可以允许Zabbix 客户端自动注册,在完成自动注册后服务器就可以监控他们。
通过这种方式新的主机可以自动添加到监控中而不需要在服务器上进行手动配置。
当一个之前未知的主动客户端请求检查时就可以发生自动注册。
这个特性可能对自动监控新的云计算中节点非常方便。只要你在云中有一个新的节点,
Zabbix就会自动开始收集主机的性能和可用性数据。
主动客户端自动注册同样支持监控使用被动检查的已添加的主机。当主动客户端请求检查时,
假设它在配置文件中配置了&ListenIP& 或 &ListenPort& 参数,这些也会一起发送到服务器。
(如果指定了多个IP地址,那么第一个IP地址会发往服务器)
服务器在添加新的自动注册的主机时会使用接收到的IP地址和端口来配置客户端。
如果没有收到IP地址,就使用进来的连接中使用的IP地址。如果没有收到端口值,默认使用10050端口。
配置主动客户端自动注册需要你为主动客户端自动注册建立一个action&
和需要在客户端配置文件中设置参数。
注意:建立network discovery&不需要有主动客户端自动注册。
1)主动客户端自动注册的动作
跳转到&Configuration & Actions, 选择Auto registration&作为事件源然后点击Create action:
在Action表单,填写你的动作名称
在条件表单,不需要任何条件
在操作表单,添加相关操作,如添加主机,添中到组(比如组Discovered hosts),
链接到模板等等。
小窍门:如果主机自动注册的主机可能只支持主动监测(如主机与Zabbix服务器被防火墙隔离开了),
这时你可能会想创建一个特殊的模板如Template_Linux-active&来链接。
2)客户端配置文件
确保你在客户端配置文件zabbix_agentd.conf中指定了Zabbix服务器地址:
ServerActive=10.0.0.1
除非你在zabbix_agentd.conf定义了主机名,否则客户端的系统主机名会被用来命名主机。
在Linux上可以使用hostname来获取系统主机名。
重启agent来让配置文件的改动生效。
3. 使用主机元数据
注意:&使用主机元数据&一节中的内容为Zabbix 2.2 的文档
当客户端发送一个自动注册请求到服务器时它发送它的主机名。在一些时候(比如Amazon云节点)
主机名不足够让Zabbix服务器来区分发现的主机。主机元数据可以选择性地用来从
客户端发送其它的信息到服务器。
主机元数可以在客户端配置文件中zabbix_agentd.conf中配置。有两种在配置文件中指定元数据的方法:
HostMetadata
HostMetadataItem
选项的描述可以在上面的链接中查看。
注意:自动注册请求发生在每次主动客户端发送一个刷新主动检查的请求到服务器时。
请求间的延时在客户端中的RefreshActiveChecks&参数中指定。第一次请求将在客户端重启之后立即发送。
使用主机元数据来区分Linux和Windows主机
假设你希望主机自动注册到Zabbix服务器。在你的网络中有主动Zabbix客户端。在你的网络中有
Windows主机和Linux主机,而且在你的Zabbix前端有&Template OS Linux& 和 &Template OS Windows&模板
。因此在主机注册时你想将合适的模板应用到注册的主机上。默认在自动注册时只有主机名发送到服务器,
而这是不够的。为了确保合适的模板应用到主机你必须使用主机元数据。
客户端配置
要做的第一件事是配置客户端。添加下面这一些到客户端配置文件:
HostMetadataItem=system.uname
通过这种方法你就确保存了主机元数据包含了依赖于主机正在运行的&Linux&或&Windows&。
下面是这种情况下的一个主机元数据的例子:
Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32
别忘了在对配置文件做了任何修改后重启客户端。
现在你需要配置前端,创建2个动作,第1个动作:
Name: Linux host autoregistration
Conditions: Host metadata like Linux
Operations: Link to templates: Template OS Linux
注意:你可以在这个例子中跳过添加&Add host& 操作。链接到模块前需要先添加主机来让服务器自动链接到模板。
第2个动作:
Name: Windows host autoregistration
Conditions: Host metadata like Windows
Operations: Link to templates: Template OS Windows
使用主机元数据来提供一些基础的保护,去除不想要的主机注册。
客户端配置
添加下行到客户端配置文件:
HostMetadata: Linux 21df83bf21bf0bedb95fba66a6dbf834f8b91ae5e08ae
这里Linux是平台,剩下的字符串是一些难以猜解的秘密文本。
别忘了在对配置文件做了任何修改后重启客户端。
在前端创建一个动作,使用上面谈及的难以猜解的秘密来禁止不需要的主机。
Name: Auto registration action Linux
Conditions:
Type of calculation: AND
Condition (A): Host metadata like Linux
Condition (B): Host metadata like 21df83bf21bf0bed41285
58ab9b95fba66a6dbf834f8b91ae5e08ae
Operations:
Send message to users: Admin via all media
Add to host groups: Linux servers
Link to templates: Template OS Linux
注意单独这种方法不能提供强保护,因为数据是明码传输的。
三、低级别发现Low-level discovery
低级别发现为一台电脑上的不同实体提供了一种自动创建数据项,触发器和图像的方法。
比如Zabbix可以自动开始监控你机器上的文件系统或网络接口,不需要对每个文件系统和网络接口手动创建数据项
。另外还可以配置Zabbix自动删除不需要的实体,基于定期执行的发现的结果。
在Zabbix 2.0中,支持三种现成的类型的数据项发现:
文件系统发现
网络接口发现
SNMP OID发现
一个用户可以定义他们自己的发现类型,只需要他们遵守一个特定的JSON协议。
发现过程的通用架构是这样的:
首先,一个用户创建发现规则,在&Configuration& & &Templates& & &Discovery&栏中创建。
一个发现规则由以下几部分组成:
发现必要的实体的数据项(比如文件系统或网络接口)
数据项,触发器和基于数据项的值创建的图形的原形
发现必要实体的数据项就像在其它地方看到的数据项一样:服务器向Zabbix客户端(或其它类型
的数据采集端)请求数据项的值,客户端响应一个文本值。不同之处在于客户端响应的值应该以
一种特定的JSON格式包含一个已发现的实体的列表。格式的细节只对自定义发现检查的实施者很重要,
它必须知道返回的数据包含一个macro-&value对的列表。比如数据项&net.if.discovery&可能返回两对数据:
&{#IFNAME}& & &lo& 和 &{#IFNAME}& & &eth0&P。
注意:在下文中macro将被翻译为宏。
注意:低级别发现数据项 & vfs.fs.discovery, net.if,discovery 从Zabbix agent 2.0版本开始支持。
注意:在一个Zabbix代理上,低级别发现规则返回的值限制于4000个字符(Oracle数据库)
和2048个字符(IBM DB2数据库)。
这些宏接着被用在名称,键和其它作为为每个被发现实体创建真实数据项,
触发器和图形的基础的原型域。可以使用这些宏:
数据项原型中:
计算数据项公式
SSH和Telnet脚本
数据库监控数据项参数
触发器原型中:
表达式(在引用数据项原型时)
图形原型中:
当服务器接收到一个发现的数据项的值后,它会查找macro & value对然后对每一对基于他们的
原型创建真实的数据项,触发器和图形。在上面的net.if.discovery例了中,服务器会为环回接口lo
和eth0接口创建一个数据项,触发器和图形的集合。
下面的部分将会详细阐释上面描述的过程和作为一个执行文件系统,网络接口和SNMP 
OID发现的how-to文档。最后的部分将描述发现数据项的JSON格式和提供一个例子来说明如何用
一个Perl脚本来实施你自己的文件系统发现。
2. 文件系统发现
要配置文件系统发现,按如下所示:
跳到&Configuration&&&Templates
在合适的模板行中点击Discovery
在屏幕右上角点击Create discovery rule
填写表单中的项目
发现规则名称
执行发现的检查类型。对文件系统发现使用Zabbix agent&类型
一个键为 &vfs.fs.discovery& 的项目内建到很多平台的Zabbix agent (查看supported item
key list&获取细节),这个数据项将返回一个JSON,里面包含了电脑上现存的文件系统列表和他们的类型。
Update interval (in sec)
这个域指定了Zabbix多久执行一次发现。开始的时候,当你要建立文件系统发现,
你可能想将它设置为一个小的间隔,但是只要你知道了
它在工作了你可以将它设为30分钟或更久,因为文件系统并不经常发生更改。
注意:如果设置为0,这个项目将不会轮询。然而如果一个非零的弹性区间也存在,
项目将在弹性区间期间被轮询。 你可以创建更新间隔例外,比如:
Flexible intervals
Interval:&0, Period:&6-7,00:00-24:00&& 将在周末禁止轮询。否则默认的更新间隔将被
使用。如果多个弹性区间重叠了,在重叠期间将使用最小的间隔值。
查看Time period specification&页面获取区间格式的描述。
注意:如果设置为0,项目在弹性区间段将不会轮询,只有在弹性区间结束后才根据更新间隔进行轮询。
Keep lost resources period (in days)
这个域允许你指定发现的实体的发现状态变为没有再被发现后可以保留多少天(最大3650天)。
注意:如果设置为0,实体将立即删除。不推荐使用0,因为只要错误
地编辑过滤器就可能会终结实体,删除所有的历史数据。
过滤嘎啦可以用于只对特定的文件系统创建真实的数据项,触发器和图形。
它使用POSIX Extended Regular Expression.比如,如果你只对C:, D:, and E
: 文件系统感兴趣,你可以将{#FSNAME} 放到 &Macro& ,然后设置正则表
达式 &^C|^D|^E& 到 &Regexp& 文本域。过滤也可能通过文件系统类型,使
用{#FSTYPE} 宏,如 &^ext|^reiserfs&。为了测试正则表达式,你可以使用&grep -E&,例如:
for f in ext2 do echo $f | grep -E '^ext|^reiserfs' || echo &SKIP: $f&; done
Description
输入一个描述。
Enabled&& 这个规则将会被处理
Disabled&& 这个规则将不会被处理
Not supported&& 这个项目不被支持。这个项目将不会被处理
。然而Zabbix会根据refreshing unsupported items设置的间隔
周期性地尝试着将项目的状态设置为Enabled&。
警告:Zabbix 数据库如果存放在MySQL的话,如果文件系统名称只是大小写不同的话,数
据库在创建时必须使用大小写敏感的方式,这样才能正确地发现。
注意:发现规则历史不会保存。
一旦规则被创建,跳转到规则的数据项上,然后点击 &Create prototype& 来创建数据项原型。
注意在需要文件系统名称的地方宏{#FSNAME} 是怎样使用的。当发现规则被处理后,
这个宏会被替换为已发现的文件系统。
注意:如果一个数据项原型在创建时是Disabled&状态,那么它会被添加到一个已发现的实体,但是是disabled 状态。
我们可以对每个我们感兴趣的文件系统指标创建多个数据项原型。
然后我们以类似的方式创建触发器原型:
图形原型也一样:
最后,我们创建了如下所示的发现规则。它有5个娄据项原型,两个触发器原型和一个图形原型。
下面的屏幕截图说明了发现的数据项,触发器和图形是如何看起来像主机的配置。
发现的实体都以他们链接的发现规则作为前缀。
通过低级别发现创建的数据项(触发器和图形也类似)不能被手动删除。然而如果一个
已发现的实体(文件系统,网络接口等)停止被发现了,那么他们可以自动删除。在这种情况下这些数据项,
触发器和图形将会在过了Keep lost resources period&域指定的时间后立即被删除。
当已发现的实体变为&Not discovered anymore&时,一个橙色的生命时间指示器会显示在数据项列表上
移动你的鼠标到它们上,一个信息将会显示他们在删除前还会留下多少天。
3. 网络接口发现
发现网络接口可以通过与文件系统发现几乎相同的方式来做,除了你可以使用发现规则键&net.if.disc
overy& 来代替&vfs.fs.discovery& 和在过滤器和数据项/触发器/图形原型中使用宏{#IFNAME}来代替{#FSNAME}。
比如你可以创建基于 &net.if.discovery&的数据项原型: &net.if.in[{#IFNAME},bytes]&, &net.if.out[{#IFNAME},bytes]&。
查看See above&来获取关于过滤器的更多信息。
4. SNMP OID发现
在这个例子中,我们会在一个交换机上执行SNMP 发现。首先跳到&Configuration& & &Templates&。
要编辑模板的发现规则,点击 &Discovery& 栏中的链接。
然后点击 &Create rule& 和填写下面截屏中的表单信息。
不像文件系统和网络接口发现,这个项目并不需要包含 &snmp.discovery& 键。项目类型选择SNMP代理就足够了。
同样,不像前面的例子,这个发现项目会为每个发现的实体创建两个宏{#SNMPINDEX} 和 {#SNMPVALUE}
。如果要对返回的值过滤lo接口,你可以将&{#SNMPVALUE}& 放到 &Macro& 然后将 &^([^l]|l$)[^o]?&
正则表达式放到 &Regexp& 文本域中。See above&查看更多关于过滤器的信息。
在 &SNMP OID& 域,你要放置一个这些宏可以产生有意义的值的OD。
为理解我们的意思,让我们在我们的交换机上执行snmpwalk:
$ snmpwalk -v 2c -c public 192.168.1.1 IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: WAN
IF-MIB::ifDescr.2 = STRING: LAN1
IF-MIB::ifDescr.3 = STRING: LAN2
宏 {#SNMPINDEX} 从OID中截取ifDescr 的后面(在这个例子中是1,2,3)获取值。宏 {#SNMPVALUE}
从相应的OID中获取值(这里是 WAN, LAN1, LAN2)。因此我们的 &snmp.discovery&
项目将返回3个macro & value 对的集合:
{#SNMPINDEX} -& 1&& {#SNMPVALUE} -& WAN
{#SNMPINDEX} -& 2&& {#SNMPVALUE} -& LAN1
{#SNMPINDEX} -& 3&& {#SNMPVALUE} -& LAN2
下面的图中显示了我们如何在数据项原型中使用这些宏:
类似的,创建需要的数据项原型:
同样创建触发器原型:
和图形原型:
我们发现规则的汇总如下:
当服务器运行时,它会创建真实的数据项,触发器和图形,基于 &snmp.discovery& 所返回的值
。在主机配置中他们包含了一个金色的发现规则名称的前缀。
5. 创建定制的低级别发现规则
创建一个完全定制的低级别发现规则是可能的,发现任何种类的的实体,如数据库服务器上的数据库。
要这样做,应该创建一个定制的项目来返回JSON,指定发现的物体和他们的一些属性(可选的)。
每个实体的宏的数量是不受限制的,虽然内建的发现规则返回一个或两个宏,但也可以返回更多。
需要的JSON格式可以通过一个例子来解释。假设我们在运行一个老的Zabbix 1.8客户端(这个客户
端不支持 &vfs.fs.discovery&),但是我们仍然需要发现文件系统。这里是Linux上一个简单的Perl脚本,
用来发现挂载的文件系统和输出JSON,这个JSON包含文件系统名称和类型。一种使用它的方法是
使用一个键为&vfs.fs.discovery_perl&的UserParameter:
#!/usr/bin/perl
$first = 1;
print &{\n&;
print &\t\&data\&:[\n\n&;
for (`cat /proc/mounts`)
&&&&($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
&&&&$fsname =~ s!/!\\/!g;
&&&&print &\t,\n& if not $
&&&&$first = 0;
&&&&print &\t{\n&;
&&&&print &\t\t\&{#FSNAME}\&:\&$fsname\&,\n&;
&&&&print &\t\t\&{#FSTYPE}\&:\&$fstype\&\n&;
&&&&print &\t}\n&;
print &\n\t]\n&;
print &}\n&;
它的输出的一个例子如下(为了清晰进行了重新排版)。定制的发现检查的JSON必须要遵义相同的格式。
&&&data&:[
&&{ &{#FSNAME}&:&\/&,&&&&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&rootfs&&& },
&&{ &{#FSNAME}&:&\/sys&,&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&sysfs&&&& },
&&{ &{#FSNAME}&:&\/proc&,&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&proc&&&&& },
&&{ &{#FSNAME}&:&\/dev&,&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&devtmpfs& },
&&{ &{#FSNAME}&:&\/dev\/pts&,&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&devpts&&& },
&&{ &{#FSNAME}&:&\/&,&&&&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&ext3&&&&& },
&&{ &{#FSNAME}&:&\/lib\/init\/rw&,&&&&&&&&&&&&& &{#FSTYPE}&:&tmpfs&&&& },
&&{ &{#FSNAME}&:&\/dev\/shm&,&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&tmpfs&&&& },
&&{ &{#FSNAME}&:&\/home&,&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&ext3&&&&& },
&&{ &{#FSNAME}&:&\/tmp&,&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&ext3&&&&& },
&&{ &{#FSNAME}&:&\/usr&,&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&ext3&&&&& },
&&{ &{#FSNAME}&:&\/var&,&&&&&&&&&&&&&&&&&&&&&&& &{#FSTYPE}&:&ext3&&&&& },
&&{ &{#FSNAME}&:&\/sys\/fs\/fuse\/connections&, &{#FSTYPE}&:&fusectl&& }
然后,在发现规则的 &Filter& 域,我们可以指定&{#FSTYPE}&作为宏 然后指定 &rootfs|ext3&P 作为正则表达式。
注意:你不必在定制的低级别发现规则中使用宏名FSNAME/FSTYPE,你可以任意使用任何你喜欢的名称。
四、三种发现的比较和总结
低级别发现
实体(包括数据项、触发器和图形的整体)
服务器使用指定的检查项定期扫描IP段来发现主机
客户端提交主动检查请求,服务器添加客户端
客户端定期检查低级别发现的项目如vfs.fs.discovery
适用于所有新主机位于一个网段内
适用于多个新主机分散在不同的网段
某种数据可能包含多项类型相同的子数据,如文件系统、网络接口等
采集客户端
SNMP,Zabbix Agent(被动式),端口范围
Zabbix Agent(主动式)
Zabbix 支持的所有类型
Zabbix通过这种方式,能够满足大部分的自动化需求,如:
自动添加节点,不管节点是在某一个网段还是分散在多个网段,都可以使用网络发现或自
动注册中的一种方法来实现节点的监控,这个过程不需要任何的手动配置。
自动添加数据项,对于一些与主机相关的数据,如主机的网络接口名称和数量,使用低级
别发现可以很好的解决这个问题。实现自动添加数据项,以及添加对数据项的进一步处理。
感谢您对的支持,我们为您免费提供技术文章,详细使用和说明,有时可能不完善、敬请谅解!如果有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

我要回帖

更多关于 把桌面图标放到任务栏 的文章

 

随机推荐