标签 搜索引擎 下的文章

ChatGPT 的数学成绩更差了

研究人员给聊天机器人布置了一项基本任务:识别某个数字是否是质数。这种数学问题对人来说很复杂,但对电脑来说却很简单。研究人员向 ChatGPT 输送了 1000 个不同的数字。三月份,GPT-4 能正确识别 84% 的数字是否为质数。(坦率地说,对于一台计算机来说,这样的表现非常一般。)到了六月份,它的成功率下降到了 51%。在 8 项不同的任务中,GPT-4 有 6 项变得更糟。这种退化是人工智能开发人员所熟知的漂移现象的一个例子,即试图改进极其复杂的人工智能模型的一部分,却使模型的其他部分表现更差。

消息来源:华尔街日报
老王点评:GPT 这种人工智能的“思考”方式和我们人类是不同的,或许以后人工智能变聪明的方式是让它自己调整自己。

中国论文数高居第一背后可能的原因

日本文部科学省发布的最新排名显示,中国发表论文数再次高居第一,连续两年保持“三冠王”地位。中国的论文总数的全球份额为 24.6%,与第 2 位的美国相比高出 8.5 个百分点。引用数排名前 10% 的“受关注论文”的份额为 28.9%,排名前 1% 的“顶尖论文”的份额为 29.3%,均拉大了与美国的差距。有观点指出,中国的排名上升是因为本国研究人员相互引用了彼此的论文。这一比例美国为 29%,日本为 19%,而中国达到了 61%。值得注意的是,中国论文在英国《自然》和美国《科学》的论文数占比,中国仅为近 2 成,仍远低于美国的约 7 成,排名在英国和德国之后。

消息来源:日经社
老王点评:要客观认识中国在科技方面的进步。

CNET 删除旧文以改进搜索排名

科技新闻网站 CNET 从 7 月开始删除了数千篇文章,它在内部备忘录中称,此举以向谷歌展示其内容 “新鲜、相关,值得在搜索结果中排名高于竞争对手”。CNET 称,“在理想的情况下,我们会将所有内容永久保留在网站上。不幸的是,我们受到了现代互联网的惩罚”。CNET 表示,他们会根据“页面浏览量、反向链接以及自上次更新时间等”来删除“没有为有意义的受众提供服务”的页面。但谷歌建议不要采用这种做法,表示不会因为删除过时的文章而提升整个网站的印象。

消息来源:Gizmodo
老王点评:虽然谷歌是这样说的,但是 CNET 这样做想必是有数据支撑的。无论如何,删除旧页面才能提升网站排名,我认为事情本不应该是这样的。

谷歌新推出几个顶级域,招致批评

两周前,谷歌在互联网上增加了八个新的顶级域名,使顶级域名的总数达到 1480 个!其中两个新域名 .zip 和 .mov 可能成为网上骗子的福音,他们会欺骗人们点击恶意链接。许多安全从业者警告说,当这两个顶级域名在电子邮件、社交媒体和其他地方显示时,会造成混乱。人们担心当提及 setup.zip 或 vacation.mov 等文件的电子邮件和社交媒体帖子会自动将它们变成可点击的链接,而骗子会抓住这种模糊性。

消息来源:Ars Technica
老王点评:链接没有个链接的样子,各种新的顶级域泛滥之后,我们需要一个更有辨识度的方式来识别什么是链接。或许谷歌利用新顶级域的方式看起来颇为有趣,但是应该有更好的用户体验方式来避免可能的安全风险。

谷歌计划明年用隐私沙盒取代第三方 Cookie

谷歌在浏览器广告技术上进行了许多次尝试,均受到了不同的利益方的抨击。谷歌最新的计划是,从 2024 年开始,将把 1% 的 Chrome 用户迁移到隐私沙盒,禁用第三方 Cookie,并在 2024 年底完全淘汰第三方 Cookie。隐私沙盒跟踪用户的兴趣,允许广告商根据兴趣展示广告,而用户可以管理他们的兴趣并对其归类分组。隐私沙盒标志着广告行业的一次巨大变化。虽然从 Chrome 101 开始就已经可以测试,但今年七月发布的 Chrome 115 将使隐私沙盒 API 普遍可用,开发者可对其进行测试,之后将不会对该 API 进行重大改变。谷歌最初计划最早在 2022 年逐步淘汰跟踪第三方 Cookie,但之后因为种种原因反复修改改计划时间。

消息来源:Tech Crunch
老王点评:其实,广告技术本身就是一种对隐私的破坏,无论这种技术有多么先进。所以,即便看起来现在替代第三方 Cookie 技术似乎有所进步,但是,广告经济的本质决定了,你在广告商眼中是一定被清晰画像的。

三星不会将其手机上的默认搜索引擎换成必应

据报道,世界上最大的智能手机制造商三星已经暂停了一项内部审查,该审查曾探讨过在其移动设备上用必应取代谷歌。这个潜在的转换将取代谷歌成为预装在三星的智能手机的 “互联网” 网页浏览应用程序的首选搜索引擎。

消息来源:华尔街日报
老王点评:看来必应想要在默认搜索引擎市场上攻城略地,谷歌不会坐以待毙。

回音

  • 之前我们 报道 过,由于 CAN 总线的安全缺陷以及缺乏发动机电子防盗器,在病毒性传播的视频推动下,大量的起亚和现代的汽车成为盗窃目标。现在两家汽车厂商与用户达成了 2 亿美元的和解协议。

OpenAI 雇佣上千人改进 AI 的编程能力

OpenAI 过去半年招募了大约一千名远程工作的合同工,其中四成是程序员,他们的工作是为 OpenAI 的模型创建数据学习软件工程。一位完成 OpenAI 五小时无偿编程测试的开发者说,他被要求完成两部分组成的任务:首先是给予一个编程问题,要求用书面英语解释他会如何处理。然后要求他提供解决方案。如果他发现错误,OpenAI 会让他详细描述错误,以及如何修复。

消息来源:Slashdot
老王点评:这是真·“人工”训练的智能。

Yandex 的搜索引擎使用了 1922 个排名因子

Yandex 搜索引擎的源代码最近被前雇员泄露。根据分析,它的搜索排名算法使用了 1922 个排名因子。即便 Yandex 不是谷歌,但 Yandex 和谷歌的排名因子肯定有很多相似之处。Yandex 的排名因子包括 PageRank 和链接相关因子、文本相关性、内容年龄和新鲜度,终端用户行为信号、主机可靠性、维基百科等网站高优先度,等等。

消息来源:Solidot
老王点评:这种靠排名因子来列出搜索结果的做法,现在和 ChatGPT 等 AI 相比,感觉太机械、太手工、太落后了。

GIMP 3.0.0 有望在年内发布

开源图像编辑软件项目 GIMP 公布了 2022 年年度报告。2022 年 GIMP 项目发布了一个稳定版本 2.10.32,3 个开发版本 2.99.10、2.99.12 和 2.99.14;有 87 位贡献者参与了项目,其中包括 35 位开发者,核心开发者 7 位;Wayland 支持有所改善;GTK+3 移植接近完成。项目团队称,计划是在 2023 年发布 GIMP 3.0.0,至少会发布一个 RC 版本。

消息来源:GIMP
老王点评:不知道 2.99 最终能达到什么子版本,但是 3.0 已经等了太久了,以至于没啥激情了。

上手开源的对等 Web 索引器 YaCy。

很久以前,互联网很小,小到几个人就可以索引它们,这些人收集了所有网站的名称和链接,并按主题将它们分别列在页面或印刷书籍中。随着万维网网络的发展,形成了“网站环”形式,具有类似的内容、主题或敏感性的站点捆绑在一起,形成了通往每个成员的循环路径。环中任何站点的访问者都可以单击按钮以转到环中的下一个或上一个站点,以发现与其兴趣相关的新站点。

又过了一段时间,互联网似乎变得臃肿不堪了。每个人都在网络上,有很多冗余信息和垃圾邮件,多到让你无法找到任何东西。Yahoo 和 AOL、CompuServe 以及类似的服务各自采用了不同的方法来解决这个问题,但是直到谷歌出现后,现代的搜索模型才得以普及。按谷歌的做法,互联网应该通过搜索引擎进行索引、排序和排名。

为什么选择开源替代品?

像谷歌和 DuckDuckGo 这样的搜索引擎显然是卓有成效的。你可能是通过搜索引擎访问的本站。尽管对于因主机没有选择遵循优化搜索引擎的最佳实践从而导致会内容陷入困境这件事仍存在争论,但用于管理丰富的文化、知识和轻率的信息(即互联网)的现代解决方案是冷冰冰的索引。

但是也许出于隐私方面的考虑,或者你希望为使互联网更加独立而做出贡献,你或许不愿意使用谷歌或 DuckDuckGo。如果你对此感兴趣,那么可以考虑参加 YaCy,这是一个对等互联网索引器和搜索引擎。

安装 YaCy

要安装并尝试 YaCy,请首先确保已安装 Java。如果你使用的是 Linux,则可以按照我的《如何在 Linux 上安装 Java》中的说明进行操作。如果你使用 Windows 或 MacOS,请从 AdoptOpenJDK.net 获取安装程序。

安装 Java 后,请根据你的平台下载安装程序

如果你使用的是 Linux,请解压缩 tarball 并将其移至 /opt 目录:

$ sudo tar --extract --file  yacy_*z --directory /opt

根据下载的安装程序的说明启动 YaCy。

在 Linux 上,启动在后台运行的 YaCy:

$ /opt/startYACY.sh &

在 Web 浏览器中,导航到 localhost:8090 并进行搜索。

 title=

将 YaCy 添加到你的地址栏

如果你使用的是 Firefox Web 浏览器,则只需单击几下,即可在 Awesome Bar(Mozilla 给 URL 栏起的名称)中将 YaCy 设置为默认搜索引擎。

首先,如果尚未显示,在 Firefox 工具栏中使专用搜索栏显示出来(你不必使搜索栏保持一直可见;只需要激活它足够长的时间即可添加自定义搜索引擎)。Firefox 右上角的“汉堡”菜单中的“自定义”菜单中提供了搜索栏。在 Firefox 工具栏上的搜索栏可见后,导航至 localhost:8090,然后单击刚添加的 Firefox 搜索栏中的放大镜图标。单击选项将 YaCy 添加到你的 Firefox 的搜索引擎中。

 title=

完成此操作后,你可以在 Firefox 首选项中将其标记为默认值,或者仅在 Firefox 搜索栏中执行的搜索中选择性地使用它。如果将其设置为默认搜索引擎,则可能不需要专用搜索栏,因为 Awesome Bar 也使用默认引擎,因此可以将其从工具栏中删除。

对等搜索引擎如何工作

YaCy 是一个开源的分布式搜索引擎。它是用 Java 编写的,因此可以在任何平台上运行,并且可以执行 Web 爬网、索引和搜索。这是一个对等(P2P)网络,因此每个运行 YaCy 的用户都将努力地不断跟踪互联网的变化情况。当然,没有单个用户能拥有整个互联网的完整索引,因为这将需要一个数据中心来容纳,但是该索引分布在所有 YaCy 用户中且是冗余的。它与 BitTorrent 非常相似(因为它使用分布式哈希表 DHT 来引用索引条目),只不过你所共享的数据是单词和 URL 关联的矩阵。通过混合哈希表返回的结果,没人能说出谁搜索了哪些单词,因此所有搜索在功能上都是匿名的。这是用于无偏见、无广告、未跟踪和匿名搜索的有效系统,你只需要使用它就加入了它。

搜索引擎和算法

索引互联网的行为是指将网页分成单个单词,然后将页面的 URL 与每个单词相关联。在搜索引擎中搜索一个或多个单词将获取与该查询关联的所有 URL。YaCy 客户端在运行时也是如此。

客户端要做的另一件事是为你的浏览器提供搜索界面。你可以将 Web 浏览器指向 localhost:8090 来搜索 YaCy,而不是在要搜索时导航到谷歌。你甚至可以将其添加到浏览器的搜索栏中(取决于浏览器的可扩展性),因此可以从 URL 栏中进行搜索。

YaCy 的防火墙设置

首次开始使用 YaCy 时,它可能运行在“初级”模式下。这意味着你的客户端爬网的站点仅对你可用,因为其他 YaCy 客户端无法访问你的索引条目。要加入对等环境,必须在路由器的防火墙(或者你正在运行的软件防火墙)中打开端口 8090,这称为“高级”模式。

如果你使用的是 Linux,则可以在《使用防火墙让你的 Linux 更加强大》中找到有关计算机防火墙的更多信息。在其他平台上,请参考操作系统的文档。

互联网服务提供商(ISP)提供的路由器上几乎总是启用了防火墙,并且有太多种类的防火墙无法准确说明。大多数路由器都提供了在防火墙上“打洞”的选项,因为许多流行的联网游戏都需要双向流量。

如果你知道如何登录路由器(通常为 192.168.0.1 或 10.1.0.1,但可能因制造商的设置而异),则登录并查找配置面板来控制“防火墙”或“端口转发”或“应用”。

找到路由器防火墙的首选项后,将端口 8090 添加到白名单。例如:

 title=

如果路由器正在进行端口转发,则必须使用相同的端口将传入的流量转发到计算机的 IP 地址。例如:

 title=

如果由于某种原因无法调整防火墙设置,那也没事。YaCy 将继续以初级模式运行并作为对等搜索网络的客户端运行。

你的互联网

使用 YaCy 搜索引擎可以做的不仅仅是被动搜索。你可以强制抓取不太显眼的网站,可以请求对网站进行网络抓取,可以选择使用 YaCy 进行本地搜索等等。你可以更好地控制你的互联网的所呈现的一切。高级用户越多,索引的网站就越多。索引的网站越多,所有用户的体验就越好。加入吧!


via: https://opensource.com/article/20/2/open-source-search-engine

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

此前我们介绍了如何在命令行中使用 Google 搜索。许多读者反馈说他们平时使用 Duck Duck Go,这是一个功能强大而且保密性很强的搜索引擎。

正巧,最近出现了一款能够从命令行搜索 DuckDuckGo 的工具。它叫做 ddgr(我把它读作 “dodger”),非常好用。

Googler 一样,ddgr 是一个完全开源而且非官方的工具。没错,它并不属于 DuckDuckGo。所以,如果你发现它返回的结果有些奇怪,请先询问这个工具的开发者,而不是搜索引擎的开发者。

DuckDuckGo 命令行应用

DuckDuckGo Bangs(DuckDuckGo 快捷搜索) 可以帮助你轻易地在 DuckDuckGo 上找到想要的信息(甚至 本网站 omgubuntu 都有快捷搜索)。ddgr 非常忠实地呈现了这个功能。

和网页版不同的是,你可以更改每页返回多少结果。这比起每次查询都要看三十多条结果要方便一些。默认界面经过了精心设计,在不影响可读性的情况下尽量减少了占用空间。

ddgr 有许多功能和亮点,包括:

  • 更改搜索结果数
  • 支持 Bash 自动补全
  • 使用 DuckDuckGo Bangs
  • 在浏览器中打开链接
  • ”手气不错“选项
  • 基于时间、地区、文件类型等的筛选功能
  • 极少的依赖项

你可以从 Github 的项目页面上下载支持各种系统的 ddgr

另外,在 Ubuntu 16.04 LTS 或更新版本中,你可以使用 PPA 安装 ddgr。这个仓库由 ddgr 的开发者维护。如果你想要保持在最新版本的话,推荐使用这种方式安装。

需要提醒的是,在本文创作时,这个 PPA 中的 ddgr 并不是 最新版本,而是一个稍旧的版本(缺少 -num 选项)。

使用以下命令添加 PPA:

sudo add-apt-repository ppa:twodopeshaggy/jarun
sudo apt-get update

如何使用 ddgr 在命令行中搜索 DuckDuckGo

安装完毕后,你只需打开你的终端模拟器,并运行:

ddgr

然后输入查询内容:

search-term

你可以限制搜索结果数:

ddgr --num 5 search-term

或者自动在浏览器中打开第一条搜索结果:

ddgr -j search-term

你可以使用参数和选项来提高搜索精确度。使用以下命令来查看所有的参数:

ddgr -h

via: http://www.omgubuntu.co.uk/2017/11/duck-duck-go-terminal-app

作者:JOEY SNEDDON 译者:yixunx 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Elasticsearch 是基于 Lucene 由 Java 开发的开源搜索引擎。它提供了一个分布式、多租户的全文搜索引擎(LCTT 译注:多租户是指多租户技术,是一种软件架构技术,用来探讨与实现如何在多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。),并带有 HTTP 仪表盘的 Web 界面(Kibana)。数据会被 Elasticsearch 查询、检索,并且使用 JSON 文档方案存储。Elasticsearch 是一个可扩展的搜索引擎,可用于搜索所有类型的文本文档,包括日志文件。Elasticsearch 是 Elastic Stack 的核心,Elastic Stack 也被称为 ELK Stack。

Logstash 是用于管理事件和日志的开源工具。它为数据收集提供实时传递途径。 Logstash 将收集您的日志数据,将数据转换为 JSON 文档,并将其存储在 Elasticsearch 中。

Kibana 是 Elasticsearch 的开源数据可视化工具。Kibana 提供了一个漂亮的仪表盘 Web 界面。 你可以用它来管理和可视化来自 Elasticsearch 的数据。 它不仅美丽,而且强大。

在本教程中,我将向您展示如何在 CentOS 7 服务器上安装和配置 Elastic Stack 以监视服务器日志。 然后,我将向您展示如何在操作系统为 CentOS 7 和 Ubuntu 16 的客户端上安装 “Elastic beats”。

前提条件

  • 64 位的 CentOS 7,4 GB 内存 - elk 主控机
  • 64 位的 CentOS 7 ,1 GB 内存 - 客户端 1
  • 64 位的 Ubuntu 16 ,1 GB 内存 - 客户端 2

步骤 1 - 准备操作系统

在本教程中,我们将禁用 CentOS 7 服务器上的 SELinux。 编辑 SELinux 配置文件。

vim /etc/sysconfig/selinux

SELINUX 的值从 enforcing 改成 disabled

SELINUX=disabled

然后重启服务器:

reboot

再次登录服务器并检查 SELinux 状态。

getenforce

确保结果是 disabled

步骤 2 - 安装 Java

部署 Elastic stack 依赖于Java,Elasticsearch 需要 Java 8 版本,推荐使用 Oracle JDK 1.8 。我将从官方的 Oracle rpm 包安装 Java 8。

使用 wget 命令下载 Java 8 的 JDK。

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

然后使用 rpm 命令安装:

rpm -ivh jdk-8u77-linux-x64.rpm

最后,检查 java JDK 版本,确保它正常工作。

java -version

您将看到服务器的 Java 版本。

步骤 3 - 安装和配置 Elasticsearch

在此步骤中,我们将安装和配置 Elasticsearch。 从 elastic.co 网站提供的 rpm 包安装 Elasticsearch,并将其配置运行在 localhost 上(以确保该程序安全,而且不能从外部访问)。

在安装 Elasticsearch 之前,将 elastic.co 的密钥添加到服务器。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

接下来,使用 wget 下载 Elasticsearch 5.1,然后安装它。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

Elasticsearch 已经安装好了。 现在进入配置目录编辑 elasticsaerch.yml 配置文件。

cd /etc/elasticsearch/
vim elasticsearch.yml

去掉第 40 行的注释,启用 Elasticsearch 的内存锁。这将禁用 Elasticsearch 的内存交换。

bootstrap.memory_lock: true

Network 块中,取消注释 network.hosthttp.port 行。

network.host: localhost
http.port: 9200

保存文件并退出编辑器。

现在编辑 elasticsearch.service 文件的内存锁配置。

vim /usr/lib/systemd/system/elasticsearch.service

去掉第 60 行的注释,确保该值为 unlimited

MAX_LOCKED_MEMORY=unlimited

保存并退出。

Elasticsearch 配置到此结束。Elasticsearch 将在本机的 9200 端口运行,我们通过在 CentOS 服务器上启用 mlockall 来禁用内存交换。重新加载 systemd,将 Elasticsearch 置为开机启动,然后启动服务。

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

等待 Eelasticsearch 启动成功,然后检查服务器上打开的端口,确保 9200 端口的状态是 LISTEN

netstat -plntu

Check elasticsearch running on port 9200

然后检查内存锁以确保启用 mlockall,并使用以下命令检查 Elasticsearch 是否正在运行。

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

会看到如下结果。

Check memory lock elasticsearch and check status

步骤 4 - 安装和配置 Kibana 和 Nginx

在这一步,我们将在 Nginx Web 服务器上安装并配置 Kibana。 Kibana 监听在 localhost 上,而 Nginx 作为 Kibana 的反向代理。

wget 下载 Kibana 5.1,然后使用 rpm 命令安装:

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

编辑 Kibana 配置文件。

vim /etc/kibana/kibana.yml

去掉配置文件中 server.portserver.hostelasticsearch.url 这三行的注释。

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

保存并退出。

将 Kibana 设为开机启动,并且启动 Kibana 。

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana 将作为 node 应用程序运行在端口 5601 上。

netstat -plntu

Kibana running as node application on port 5601

Kibana 安装到此结束。 现在我们需要安装 Nginx 并将其配置为反向代理,以便能够从公共 IP 地址访问 Kibana。

Nginx 在 Epel 资源库中可以找到,用 yum 安装 epel-release。

yum -y install epel-release

然后安装 Nginx 和 httpd-tools 这两个包。

yum -y install nginx httpd-tools

httpd-tools 软件包包含 Web 服务器的工具,可以为 Kibana 添加 htpasswd 基础认证。

编辑 Nginx 配置文件并删除 server {} 块,这样我们可以添加一个新的虚拟主机配置。

cd /etc/nginx/
vim nginx.conf

删除 server { } 块。

Remove Server Block on Nginx configuration

保存并退出。

现在我们需要在 conf.d 目录中创建一个新的虚拟主机配置文件。 用 vim 创建新文件 kibana.conf

vim /etc/nginx/conf.d/kibana.conf

复制下面的配置。

server {
    listen 80;

    server_name elk-stack.co;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

保存并退出。

然后使用 htpasswd 命令创建一个新的基本认证文件。

sudo htpasswd -c /etc/nginx/.kibana-user admin
“输入你的密码”

测试 Nginx 配置,确保没有错误。 然后设定 Nginx 开机启动并启动 Nginx。

nginx -t
systemctl enable nginx
systemctl start nginx

Add nginx virtual host configuration for Kibana Application

步骤 5 - 安装和配置 Logstash

在此步骤中,我们将安装 Logstash,并将其配置为:从配置了 filebeat 的 logstash 客户端里集中化服务器的日志,然后过滤和转换 Syslog 数据,并将其移动到存储中心(Elasticsearch)中。

下载 Logstash 并使用 rpm 进行安装。

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

生成新的 SSL 证书文件,以便客户端可以识别 elastic 服务端。

进入 tls 目录并编辑 openssl.cnf 文件。

cd /etc/pki/tls
vim openssl.cnf

[v3_ca] 部分添加服务器标识。

[ v3_ca ]

# Server IP Address
subjectAltName = IP: 10.0.15.10

保存并退出。

使用 openssl 命令生成证书文件。

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

证书文件可以在 /etc/pki/tls/certs//etc/pki/tls/private/ 目录中找到。

接下来,我们会为 Logstash 创建新的配置文件。创建一个新的 filebeat-input.conf 文件来为 filebeat 配置日志源,然后创建一个 syslog-filter.conf 配置文件来处理 syslog,再创建一个 output-elasticsearch.conf 文件来定义输出日志数据到 Elasticsearch。

转到 logstash 配置目录,并在 conf.d 子目录中创建新的配置文件。

cd /etc/logstash/
vim conf.d/filebeat-input.conf

输入配置,粘贴以下配置:

input {
  beats {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

保存并退出。

创建 syslog-filter.conf 文件。

vim conf.d/syslog-filter.conf

粘贴以下配置:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

我们使用名为 grok 的过滤器插件来解析 syslog 文件。

保存并退出。

创建输出配置文件 output-elasticsearch.conf

vim conf.d/output-elasticsearch.conf

粘贴以下配置:

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

保存并退出。

最后,将 logstash 设定为开机启动并且启动服务。

sudo systemctl enable logstash
sudo systemctl start logstash

Logstash started on port 5443 with SSL Connection

步骤 6 - 在 CentOS 客户端上安装并配置 Filebeat

Beat 作为数据发送人的角色,是一种可以安装在客户端节点上的轻量级代理,将大量数据从客户机发送到 Logstash 或 Elasticsearch 服务器。有 4 种 beat,Filebeat 用于发送“日志文件”,Metricbeat 用于发送“指标”,Packetbeat 用于发送“网络数据”,Winlogbeat 用于发送 Windows 客户端的“事件日志”。

在本教程中,我将向您展示如何安装和配置 Filebeat,通过 SSL 连接将数据日志文件传输到 Logstash 服务器。

登录到客户端1的服务器上。 然后将证书文件从 elastic 服务器复制到客户端1的服务器上。

ssh root@client1IP

使用 scp 命令拷贝证书文件。

scp root@elk-serverIP:~/logstash-forwarder.crt .
输入 elk-server 的密码

创建一个新的目录,将证书移动到这个目录中。

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

接下来,在客户端 1 服务器上导入 elastic 密钥。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

下载 Filebeat 并且用 rpm 命令安装。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat 已经安装好了,请转到配置目录并编辑 filebeat.yml 文件。

cd /etc/filebeat/
vim filebeat.yml

在第 21 行的路径部分,添加新的日志文件。 我们将创建两个文件,记录 ssh 活动的 /var/log/secure 文件 ,以及服务器日志 /var/log/messages

  paths:
    - /var/log/secure
    - /var/log/messages

在第 26 行添加一个新配置来定义 syslog 类型的文件。

  document-type: syslog

Filebeat 默认使用 Elasticsearch 作为输出目标。 在本教程中,我们将其更改为 Logshtash。 在 83 行和 85 行添加注释来禁用 Elasticsearch 输出。

禁用 Elasticsearch 输出:

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

现在添加新的 logstash 输出配置。 去掉 logstash 输出配置的注释,并将所有值更改为下面配置中的值。

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

保存文件并退出 vim。

将 Filebeat 设定为开机启动并启动。

sudo systemctl enable filebeat
sudo systemctl start filebeat

步骤 7 - 在 Ubuntu 客户端上安装并配置 Filebeat

使用 ssh 连接到服务器。

ssh root@ubuntu-clientIP

使用 scp 命令拷贝证书文件。

scp root@elk-serverIP:~/logstash-forwarder.crt .

创建一个新的目录,将证书移动到这个目录中。

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

在服务器上导入 elastic 密钥。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

下载 Filebeat .deb 包并且使用 dpkg 命令进行安装。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

转到配置目录并编辑 filebeat.yml 文件。

cd /etc/filebeat/
vim filebeat.yml

在路径配置部分添加新的日志文件路径。

  paths:
    - /var/log/auth.log
    - /var/log/syslog

设定文档类型为 syslog

  document-type: syslog

将下列几行注释掉,禁用输出到 Elasticsearch。

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

启用 logstash 输出,去掉以下配置的注释并且按照如下所示更改值。

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

保存并退出 vim。

将 Filebeat 设定为开机启动并启动。

sudo systemctl enable filebeat
sudo systemctl start filebeat

检查服务状态:

systemctl status filebeat

Filebeat is running on the client Ubuntu

步骤 8 - 测试

打开您的网络浏览器,并访问您在 Nginx 中配置的 elastic stack 域名,我的是“elk-stack.co”。 使用管理员密码登录,然后按 Enter 键登录 Kibana 仪表盘。

Login to the Kibana Dashboard with Basic Auth

创建一个新的默认索引 filebeat-*,然后点击“创建”按钮。

Create First index filebeat for Kibana

默认索引已创建。 如果 elastic stack 上有多个 beat,您可以在“星形”按钮上点击一下即可配置默认 beat。

Filebeat index as default index on Kibana Dashboard

转到 “发现” 菜单,您就可以看到 elk-client1 和 elk-client2 服务器上的所有日志文件。

Discover all Log Files from the Servers

来自 elk-client1 服务器日志中的无效 ssh 登录的 JSON 输出示例。

JSON output for Failed SSH Login

使用其他的选项,你可以使用 Kibana 仪表盘做更多的事情。

Elastic Stack 已安装在 CentOS 7 服务器上。 Filebeat 已安装在 CentOS 7 和 Ubuntu 客户端上。


via: https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/

作者:Muhammad Arul 译者:Flowsnow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出