elk是什么
“ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
1 redis中保存的是数组(序列化),绝对不要保存SQL,保存SQL的方法很蛋疼 保存数组是为了数据库安全(万一sql语句有错误,任务就直接失败了),灵活度和兼容性
2 服务器后台作一个shell脚本,死循环,不断从队列中取数据,进行处理.如次反复,如果没有数据,也立即尝试取数据---不要担心性能问题,后台单并发请求,不会造成性能问题
3 因为队列中保存的是数组,不存在这个问题。
ECS阿里云服务器支持PHPJAVA,那么我的问题是,ECS为什么可以支持这两种语言的开发?还有Tomcat\Apache只支持一种
用阿里页面上的一句话:弹性计算服务(简称ECS)是一种简单高效的计算服务,具有可扩展的处理能力。ECS你可以把它想成是你在商场租了一台电脑(你租的原因,想想就明白了)。它不属于你。交了房租就可以随便用,系统也可以随便装。
然后你是想在这个系统上运行PHP还是Java,甚至是玩游戏,都由你决定。
另一方面,Tomcat/Apache是运行在ECS中的服务和软件,它们没有可比性。
阿里云服务器运维需要会什么?
需要会以下内容:
1、熟悉linux基本操作命令、网络基本配置、网络路由及防火墙服务配置。
2、熟悉shell脚本语言,熟悉C、Java、Python其中一种或多种。
3、Linux系统服务网络基础(重点难点TCP/UDP)、sshd服务(scp/rsync)、文件共享服务(ftp/nfs/samba)、DNS域名服务、LAMP编译安装、rsyslog、Linux分区+LVM逻辑卷+(软硬RAID)。
4、了解Linux的RAID、LVM等机制与配置,了解Linux下的各种本地文件系统与网络文件系统,熟练进行调优配置。熟悉各种主流的开源分布式文件系统及分布式存储系统。
5、熟悉Hadoop框架,各个相关软件模块,能够安装、配置、优化hadoop运行系统,熟悉各种hadoop变种产品及相应优缺点,对hadoop平台有自己的理解,了解OpenStack平台,能够搭建、定制OpenStack系统。
6、配置自动化配置自动化(Ansible/SaltStack)、监控(Zabbix/Promethus)、日志分析(ELK、KafKa)、CI/CD(Git、GitLab、Jenkins)。
7、运维安全与调优运维安全(防火墙、CA认证、***)应用软件调优(Web应用调优)系统调优(系统+内核)。
8、运维云计算Hadoop、KVM虚拟化、公有云运维(阿里云)、私有云运维(OpenStack)、Docker容器、Kubernetes(K8S)容器编排工具。
touch install-elasticsearchsh
运行脚本进行安装
source install-elasticsearchsh
vi start-elasticearchsh
vi stop-elasticsearchsh
touch install-kibanash
安装kibana
source install-kibanash
vi start-kibanash
vi stop-kibanash
vi remove-kibanash
vi install-logstashsh
安装运行以下命令
source install-logstashsh
访问服务器ip的5601端口
以测试机192168127131为例,访问其5601端口。
创建索引mytest-,如果在discover可收到logstash控制台输入的字符,说明elk服务搭建、启动成功。
vi stop-logstashsh
vi remove-logstashsh
运维人员的工作每天基本上都是在检查问题,枯燥但又重要, 要是你的某一个环节出现问题并没有及时发现问题,对于企业来说损失可能非常大,基本上运维人每天的工作我罗列了下,有这几种:
1、负责服务器的硬件配置、软件安装、机房上下架等技术维护工作
2、负责虚拟化技术产品物理机配置、管理和日常运行监控和维护
3、负责独立主机或虚拟应用产品的开通使用、日常维护、故障诊断和排除
4、提供独立主机或虚拟应用客户产品操作和应用方面的技术支持
5、监视分管的服务器,及时发现问题,并积极解决问题
现在信息化数字时代,单靠人工去检查出现错误几率会很大,而且有的运维人还不只管理两台服务器,像我们公司的运维每人至少要管理30台服务器,这样子单靠人工运维耗费的人工成本和时间是非常大的,所以还是推荐你用运维工具吧,比如云帮手()1支持跨云商批量管理服务器
2兼容性强大,兼容市面基本所有的云商云主机,兼容操作系统;
3操作简单,可视化界面预览资源、一键修复、一键部署;
4 可以远程登录云主机FTP桌面,处理云主机上的文件;
5监控和资源还有告警功能,这个是挺好的,不用盯着看;
6系统修复功能,这个是挺实用也比较必须的;
7免费使用。总得来说功能还是挺全的,不存在需要又要另外找软件的尴尬。
你好,很高兴回答你这个问题。从运维的角度来讲,服务器的数量少并不意味着我们的运维工作就非常轻松,相反我们更应该重视此阶段的工作。
我们可以从以下几方面来开展我们的运维工作:
1应用服务器
我们可以从当前服务器中找出 至少2个节点装Vsphere虚拟化,建立一个数据中心、集群 ;如果你的服务器有多网卡和SCSI,还可以做一些更高级的应用,如vmotion、负载均衡、高可用等。当虚拟机或服务器故障,可以 实现故障自动转移,有效的避免了单节点的故障,提供服务器的容错率 。
我们可以在新建的虚拟机部署Web、API等各种应用,而且 虚拟机可以在vCenter图形化界面下统一管理 。这一般是中小公司的在服务器方面的解决方案。
当然,我们对docker比较熟悉,可以使用一套docker解决方案,这比Vsphere更能节省一部分资源。当然这个需要的技能要求也比较高,需要我们不断积累。
2数据库服务器
数据库服务器在此我们单独拿出来,是因为数据库对服务器性能、磁盘IO要求比较高,不太建议使用虚拟机,当然这需要根据业务的实际情况来做选择。 数据库我们需要通过一主一从、一主二从的方式实现高可用,来避免数据库单点问 题,我们还可以选择合适的proxy来进行读写分离、读负载均衡等。另外还要考虑数据的本地备份、异地备份,来确保数据可恢复。
3系统监控
当我们在应用服务器和数据库服务器上线一套系统后, 我们需要通过监控掌握从服务器硬件、基础状态、应用、数据库等从下到上的运行状态 ,以便我们能够对告警及时做出响应。考虑到报警的及时性,我们需要监控接入多种报警渠道,如微信、钉钉、邮件、短信等。监控的目的是发现问题、解决访问,因此我们需要踏实的做好这一步,才能为我们的业务保驾护航。
好了,其实不管服务器多少,我们都需要扎实的把基础打好,这样才能以不变应万变面对各种情形。希望我的回答能够帮到你。
题主没有详细说明具体应用系统的功能,比如是否单一的Web服务?有没有微服务、分布式、集群化扩展的潜在需求?
通常来说,建议使用云服务自动化运维。云服务已经成为IT技术的核心基础设施,充分利用云服务带来的弹性和分布式优势,赋能自动化运维。
一,自动构建系统
如果需要构建应用,那么就建议配置使用CI/CD持续化集成和自动化部署,比如常用的Jenkins,配置Git代码提交时触发构建,然后自动部署。
二,日志收集处理系统
1,ELK是常见的日志收集管理系统,包括ElasticSearch, LogStash, Kibana三个服务,架构示意图如下:
2,在ELK系统中,Kibana是一个图形化展示工具,配置查询条件,运维人员随时可以搜索指定日志信息,分析处理故障。
三,服务监控
1,云监控CloudMonitor
主流云服务商都将监控功能集成到了基础架构中,以阿里云为例,云监控提供了多种配置,多维度全方位监控。
比如配置CPU使用率到达80%时,自动触发动作,增加服务器实例,同时邮件通知运维人员。
2,应用监控
以监控宝为例,配置服务地址,选择分布在不同地区和运营商的监测点。当监测点不能正常调用配置的服务地址时,将收到警告信息,可以选择邮件、短信、电话等通知方式。
四,潜在的系统扩展需求
1,是否集群化部署?需要AutoScaling自动伸缩吗?
小型化和集群化并不冲突。如果采用集群化部署,可以配置触发条件,满足时自动增加或者释放服务器资源。比如当CPU使用率达到75%或者内存占用率达到75%时,根据配置好的服务器和数量,自动触发。
2,是否使用Docker容器技术?
Docker将应用以及依赖打包到一个可移植的镜像中,可以实现虚拟化,有助于快捷高效的交付应用,结合Docker-compose资源编排,快速实现自动部署更新,不再需要常用的Jenkins构建服务器。
机器数比较小的话,你可以用云的服务器,这样可以节省好多钱。找一个专门的运维,还不如让开发自己来搞,因为机器少运维他也应付得过来。现在都在搞云计算了,把你的机器放上阿里云或者腾讯云,你自己维护好很多,包括网络贷款都很容易扩容。上面这个我说到的只是说建议你如果你已经是自己的机器了。我建议你从我下面所说的来搞。
认为的整个过程的话一般分为三个阶段,第一的话是手工阶段,什么东西都是手工搞。
第2个阶段就是脚本阶段了,本来手工搞的东西全部脚本化。
第3个阶段就是平台化了,平台化了之后,所有东西都在页面上完成系统完成,不需要人工来干预,甚至不用运维来搞。
有一些人说既然认为就是最后的一个阶段,但是这个很不成熟。所以我就不说了。
针对你这个机器数少的,你可以手工认为,或者说用脚本认为都没问题。
在合适的阶段做合适的事情就是最好的。所以我建议你手工运维或者脚本运维。
我们项目用的 wgcloud运维监控系统 ,它前身是开源项目,后来推出的商业版,也有免费版
wgcloud运行很稳定,性能很好,部署和上手容易
wgcloud支持主机各种指标监控(cpu状态/温度,内存状态,磁盘容量/IO,硬盘smart监控,系统负载,网卡流量,硬件系统信息等),数据可视化,进程应用监控,大屏可视化,服务接口检测,DOCKER监控,自动生成网络拓扑图,端口监控,日志文件监控,web SSH(堡垒机),指令下发执行,告警信息推送(邮件钉钉微信短信等)
可以装虚拟机代替,在同一个局域网情况下
找服务商外包服务,或者网上托管也不贵收费
服务器数量比较少,比如10台服务器,基本可以不设置运维岗位了,后端开发人员 或者架构师就能搞定。
我就是那种曾经在创业的小公司待过的开发人员,开发,运维我都干了。
但是想想如何更科学更高效的运维还是很有必要的。
运维的目的
软件系统的运行时环境:即公司的业务产线,靠它创造业务价值,这个是最核心的功能诉求。
实时监控系统: 任何时候都要对当前公司的产线的压力一清二楚,有问题功能随时解决,有性能问题及时扩容或者回收资源
降低服务器成本:在业务萎缩的情况下,准确评估哪些资源可以回收,降低服务器的支出
这个是当时我认为的运维的三个主要目的。
运维方案开发半路出家,当时采用的是shell+python+ansible+jekins+elk的方式
首先,我会及时的更新业务产线的物理架构图,根据架构图来规划服务器的资源使用。
比如多少个web服务,数据库多少,zk,kafka,redis集群怎么分布。
集群部署一般是放在多个服务器上的,这个时候ansible就派上用场了。
jekins主要用来自动发布更新程序已经做定时回收磁盘的任务。
elk主要用来做应用的日志系统和监控告警; 可以通过看板随时知道产线的请求数量和并发数量;
以上的运维方案适用于小公司。运维工程师看到了可以补充
搞个zabbix刷
数量少。如果配置好可以虚拟化。然后跑容器
中平六年,汉灵帝死,少帝继位,为外戚大将军何进所制。十常侍诱杀何进,袁绍等领兵诛杀宦官,西凉刺史董卓趁机进兵京师、驱逐袁绍、灭丁原收吕布、废少帝立献帝,专权朝野,并毒死刘辩。司徒王允借寿诞之引,召集满朝公卿商议,曹操自告奋勇前往行刺,为董卓发觉,危急中献上自王允处借来的七星宝刀而脱身。[1] 曹操逃至中牟县为当时县令陈宫所获。陈宫义释曹操,并弃官随之离去。途经曹操之亲戚吕伯奢家时,因误会而杀害吕伯奢一家,并说出“宁教我负天下人,休教天下人负我”之语。陈宫愤怒,独自离开。曹操只身前往陈留,散尽家资招蓦兵马,亲友皆来相投,亦有了一支人马。曹操更写信给袁绍,并会齐中原豪杰。[1]
创建kibana索引
若只需要收集显示nginx的访问日志,则可以建立一个名为nginx+时间的索引
若是需要收集一个服务器下的多个服务日志,则可以在一个conf下添加多个input并根据type来区分和实现
环境
1921682112 ES/kibana
1921682118 logstash/nginx
1921682117 logstash/mysql/nginx
建立nginx索引
1)在118服的logstash/etc目录下建立的nginxlogconf,添加
input {file {
path => "/usr/local/nginx/logs/accesslog"
type => "nginx"
}
}
output {
elasticsearch {
hosts => "1921682112:9200"
index => "nginx-%{+YYYYMMdd}"
}
}12345678910111213
其中,index即代表对应的索引名称
2)然后启动logstash
[root@localhost etc]# pwd/usr/local/logstash/etc[root@localhost etc]# /bin/logstash -f nginxlogconf1234
3)登陆kibana设置索引
4)然后手动访问nginx页面后,可以在kibana的discover界面看到
收集nginx日志和mysql日志
1)把118服的logstash目录复制到117服对应目录下
scp -r logstash/ root@1921682117:/usr/local/logstash12)在117服logstash/etc目录下建立allconf
input {file {
path => "/usr/local/nginx/logs/accesslog"
type => "nginx"
}
}
input {
file {
path => "/var/log/mysqldlog"
type => "mysql"
}
}
output { if [type] == "nginx"{
elasticsearch {
hosts => "1921682112:9200"
index => "nginx-%{+YYYYMMdd}"
}
}if [type] == "mysql"{
elasticsearch {
hosts => "1921682112:9200"
index => "mysql-%{+YYYYMMdd}"
}
}
}1234567891011121314151617181920212223242526272829
3)在kibana页面建立mysql索引
4)启动logstash
[root@host107 etc]# pwd/usr/local/logstash/etc[root@host107 etc]# /bin/logstash -f allconf1234
5)然后启动及关闭mysql服务,就可以看到日志数据
6)同样的,访问nginx页面后,也会收到nginx日志数据
备注:
1)其中上面的host列显示0000,是因为没有设置主机名,在/etc/hosts下加上
127001 hostmysqlnginx
然后hostname hostmysqlnginx
重启下logstash,就可以看到host
0条评论